gpt4 book ai didi

azure - 如何定义日期范围,然后在 USQL 中查询复杂的文件集?

转载 作者:行者123 更新时间:2023-12-02 07:48:37 24 4
gpt4 key购买 nike

有许多跨单个文件的 USQL 很好的例子。但是,您将如何复制一个非常常见的数据处理示例,在该示例中您想要获取当前系统时间,从该时间中减去 X 天,并根据该结果查询一组数据? SQL 示例:

SELECT * FROM MyTable
WHERE Date >= CAST(GETDATE() AS DATE) - 30
AND Date <= CAST(GETDATE() AS DATE) - 1

在上面的示例中,我的日期是我的文件位置,例如:

'yyyy' | 'MM' | 'DD' | Filename.csv

-- Example path
/MyDirectory/2017/12/01/SomeData.csv

因此,USQL 中是否有一种方法可以通过 Azure Data Lake Analytics 执行类似操作,但使用文件位置而不是使用“{date:yyyy}/{date:MM}/{date:dd}/”查询所有内容表达式?

如果这是不可能的,那么指定一个范围至少如下:

"/MyDirectory/2017/{10-12}/{1-30}/{filename:*}.csv"

我可以将所有文件合并到一个目录中,并使用数据中的自然日期字段在提取器之后使用 SELECT 语句进行过滤,但目录结构的要点是减少不需要的读取(事务)并且仅定位根据所述文件本身的日期查询所需的特定目录。

最佳答案

玛雅是正确的。U-SQL Language Reference 中有一些示例,更具体地在 EXTRACT Expression (U-SQL) 中有示例。 。请参阅“具有多个文件的多个目录”下的示例。以下是对该示例的一些修改,似乎可以满足您的要求。

1) 示例缺失 DECLARE @dir string = "/Samples/Data/AmbulanceData/";
2)修改DECLARE @file_set_path2阅读DECLARE @file_set_path2 string = @dir + "{date:yyyy}/{date:MM}/{date:dd}/vehicle{vid}_{*}.csv";
3. 对于您的过滤器,您可以使用 WHERE date >= DateTime.Now.AddDays(-30) AND date <= DateTime.Now.AddDays(-1)

关于azure - 如何定义日期范围,然后在 USQL 中查询复杂的文件集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47594434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com