pet*_*rko 6 azure data-partitioning output azure-data-lake u-sql
如果我不知道表中包含多少个不同的键值,是否可以根据列值自动将表拆分为多个文件?是否可以将键值放入文件名中?
Mic*_*Rys 12
这是我们的最高要求(之前也曾在stackoverflow上问过:).我们目前正在研究它,希望在夏天之前提供它.
在此之前,您必须编写脚本生成器.我倾向于使用U-SQL来生成脚本,但你可以用Powershell或T4等来完成.
这是一个例子:
假设您要为name下表/ rowset中的列编写文件@x:
name | value1 | value2
-----+--------+-------
A | 10 | 20
A | 11 | 21
B | 10 | 30
B | 100 | 200
Run Code Online (Sandbox Code Playgroud)
您可以编写脚本来生成如下所示的脚本:
@x = SELECT * FROM (VALUES( "A", 10, 20), ("A", 11, 21), ("B", 10, 30), ("B", 100, 200)) AS T(name, value1, value2);
// Generate the script to do partitioned output based on name column:
@stmts =
SELECT "OUTPUT (SELECT value1, value2 FROM @x WHERE name == \""+name+"\") TO \"/output/"+name+".csv\" USING Outputters.Csv();" AS output
FROM (SELECT DISTINCT name FROM @x) AS x;
OUTPUT @stmts TO "/output/genscript.usql"
USING Outputters.Text(delimiter:' ', quoting:false);
Run Code Online (Sandbox Code Playgroud)
然后你拿起genscript.usql,预先计算@x并提交它以将数据分成两个文件.
好问题!我很想看看里斯先生的回应。
抱歉,但这只是答案的一半。
我的第一个想法是使用您的键值对 ADL 表进行分区。但是,如果潜在的 WHERE 子句不是确定性的,我不确定您将如何处理单独的输出。也许在每个结果中进行交叉连接并......通过!
如果有一个包含一些动态代码的 WHILE 循环那就太好了!
查看 MS 论坛上有关动态输入数据集的这篇文章。仅供参考。
| 归档时间: |
|
| 查看次数: |
3300 次 |
| 最近记录: |