在我的Azure数据湖目录ingest中,有编号的文件:
ingest/file1.tsv
ingest/file2.tsv
ingest/file3.tsv在Azure Data v2 U-SQL活动中,如何仅在FileSet中编号最高的文件上运行Extractors.Tsv()
发布于 2018-02-12 07:43:47
一种方法需要两个脚本:
另一种方法是使用ADLS获得最高的数字,然后将该值传递给使用该数字上设置的文件的脚本,如下所示:
DECLARE EXTERNAL @fileno int;
@d = EXTRACT ..., fileno int
FROM "ingest/file{fileno}.tsv"
USING Extractors.Tsv();
// predicate will be pushed into EXTRACT statement.
@d = SELECT * FROM @d WHERE fileno == @fileno;在单个脚本中,语法上最简单的解决方案如下:
@d = EXTRACT ..., fileno int
FROM "ingest/file{fileno}.tsv"
USING Extractors.Tsv();
@maxfno = SELECT DISTINCT(MAX(fileno)) AS maxno FROM @d;
@d = SELECT * FROM @d JOIN @maxfno ON fileno == maxno;但这句话并不是常量折叠的,因此你无论如何都会读所有的文件。
https://stackoverflow.com/questions/48739474
复制相似问题