我有一個很大的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是確定性的。
一如既往地感謝你,使用簡單的字符串的操作,如Split或可能只是Substring。因爲看起來像字符串由長度不變的部分組成。一個簡單的問題。這些字符串的操作是否被編碼爲本地代碼?是所有字符串的操作像substring/split/...導致.net調用,或者是否存在一組字符串的操作編譯爲本機代碼? – churupaha