大きな文字列を含む大きなCSVがあります。私はU SQLでそれらを解析したい。大きな文字列を解析する方法U-SQL正規表現
@t1 =
SELECT
Regex.Match("ID=881cf2f5f474579a:T=1489536183:S=ALNI_MZsMMpA4voGE4kQMYxooceW2AOr0Q", "ID=(?<ID>\\w+):T=(?<T>\\w+):S=(?<S>[\\w\\d_]*)") AS p
FROM
(VALUES(1)) AS fe(n);
@t2 =
SELECT
p.Groups["ID"].Value AS gads_id,
p.Groups["T"].Value AS gads_t,
p.Groups["S"].Value AS gads_s
FROM
@t1;
OUTPUT @t
TO "/inhabit/test.csv"
USING Outputters.Csv();
重大度コード説明プロジェクトファイルの行の抑制状態 エラーE_CSC_USER_INVALIDCOLUMNTYPE: 「System.Text.RegularExpressions.Matchは、」列の型として使用することはできません。
私は、EXPLODE/CROSS APPLY/GROUP BYを使用してSQLで行う方法を知っています。しかし、これらの踊りがなくてもできるのだろうか?
つ以上更新
@t1 =
SELECT
Regex.Match("ID=881cf2f5f474579a:T=1489536183:S=ALNI_MZsMMpA4voGE4kQMYxooceW2AOr0Q", "ID=(?<ID>\\w+):T=(?<T>\\w+):S=(?<S>[\\w\\d_]*)").Groups["ID"].Value AS id,
Regex.Match("ID=881cf2f5f474579a:T=1489536183:S=ALNI_MZsMMpA4voGE4kQMYxooceW2AOr0Q", "ID=(?<ID>\\w+):T=(?<T>\\w+):S=(?<S>[\\w\\d_]*)").Groups["T"].Value AS t,
Regex.Match("ID=881cf2f5f474579a:T=1489536183:S=ALNI_MZsMMpA4voGE4kQMYxooceW2AOr0Q", "ID=(?<ID>\\w+):T=(?<T>\\w+):S=(?<S>[\\w\\d_]*)").Groups["S"].Value AS s
FROM
(VALUES(1)) AS fe(n);
OUTPUT @t1
TO "/inhabit/test.csv"
USING Outputters.Csv();
このwariantが正常に動作します。しかし、質問があります。正規表現は行ごとに3回喚起されますか? U-SQLエンジンをヒントするチャンスはありますか?Regex.Match関数は確定的です。
を使用しています。いつものように、スプリットのような単純な文字列の操作を使うか、サブストリングだけかもしれません。文字列のような見た目は一定の長さの部分から構成されているからです。一つの簡単な質問。文字列の操作はネイティブコードにコード化されていますか? substring/split/...のようなすべての文字列の操作は.net呼び出しにつながるか、ネイティブコードにコンパイルされた一連の文字列操作が存在するのでしょうか? – churupaha