USQL提取文件的子集

问题描述 投票:0回答:1

我有一个USQL问题。我有一个日常工作,即以下列格式将文件输出到目录

/my output/{YY YY}/{MM}/{DD}/file.CSV

我现在有第二份工作要运行,它将使用第一份工作生成的最新30个文件。我无法弄清楚如何最好地做到这一点。

我知道我可以在提取器中做通配符,但我不想提取所有文件,然后使用select / where去除我不想要的文件,因为提取所有文件可能会花费很多,如果我保持多年的价值文件。

那么有没有一种很好的方式在usql中说只提取最新的x文件?或者我有什么选择?

谢谢,约翰

azure-data-lake u-sql
1个回答
1
投票

如果你使用日期模式,它会做你想要的。

@rows = 
    EXTRACT 
      ...,
      date DateTime
    FROM /MyOutput/{date:YYYY}/{date:MM}/{date:dd}/file.csv;

SELECT * FROM @rows WHERE date > '2018-5-3'

将只读取与日期范围匹配的文件 - 它不会首先读取所有文件。

© www.soinside.com 2019 - 2024. All rights reserved.