【发布时间】:2017-04-07 12:55:24
【问题描述】:
我有一个包含大字符串的大 CSV。我想用 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 函数是确定性的。
【问题讨论】:
标签: azure-data-lake u-sql