Azure 在USQL中连接来自不同路径的文件
我的数据每天保存在以下路径中:“/data/{year}/{month}/{day}/mydata.json” 例如“/Data/2018/10/1/mydata.json”、“/Data/2018/10/2/mydata.json”、“/Data/2018/11/1/mydata.json”、“/Data/2018/12/5/mydata.json”等 我想使用USQL将所有月份和日期合并到一个文件中。有没有可能在不单独提及每一条路径的情况下,以一种简单的方式来做这件事(否则,一年中的所有日子都这样做是很疯狂的) 现在我用这个:Azure 在USQL中连接来自不同路径的文件,azure,azure-data-lake,u-sql,Azure,Azure Data Lake,U Sql,我的数据每天保存在以下路径中:“/data/{year}/{month}/{day}/mydata.json” 例如“/Data/2018/10/1/mydata.json”、“/Data/2018/10/2/mydata.json”、“/Data/2018/11/1/mydata.json”、“/Data/2018/12/5/mydata.json”等 我想使用USQL将所有月份和日期合并到一个文件中。有没有可能在不单独提及每一条路径的情况下,以一种简单的方式来做这件事(否则,一年中的所有日子
引用程序集[Newtonsoft.Json];
引用程序集[Microsoft.Analytics.Samples.Formats];
使用Microsoft.Analytics.Samples.Formats.Json;
@a=
提取事件类别字符串
,事件操作字符串
,事件标签字符串
来自“/Data/2018/10/2/mydata.json”
使用新的JsonExtractor()
联合所有
提取事件类别字符串
,事件操作字符串
,事件标签字符串
来自“/Data/2018/11/2/mydata.json”
使用新的JsonExtractor();
输出@a
至“/Output/mydata.Csv”
使用Outputters.Csv(outputhreader:true);
我想使用USQL将所有月份和日期合并到一个文件中。有没有可能在不单独提及每一条路径的情况下,以一种简单的方式来做这件事(否则,一年中的所有日子都这样做是很疯狂的)
对!!您可以使用模式来实现这一点,这是一个基本示例:
引用程序集[Newtonsoft.Json];
引用程序集[Microsoft.Analytics.Samples.Formats];
声明@input string=“/Data/2018/{*}/2/mydata.json”;
使用Microsoft.Analytics.Samples.Formats.Json;
@a=
提取事件类别字符串
,事件操作字符串
,事件标签字符串
来自@input
使用新的JsonExtractor()
输出@a
至“/Output/mydata.Csv”
使用Outputters.Csv(outputhreader:true);
这将加载该月第二天的所有数据
其他变化:
DECLARE@input string=“/Data/2018/{*}/{*}/mydata.json”代码>将处理2018年的所有文件
DECLARE@input string=“/Data/{*}/12/{*}/mydata.json”代码>将处理所有年份中第12个月生成的所有文件
如果要检索文件部分以获取实际日期部分,可以执行以下操作:
引用程序集[Newtonsoft.Json];
引用程序集[Microsoft.Analytics.Samples.Formats];
使用Microsoft.Analytics.Samples.Formats.Json;
@a=
提取事件类别字符串
,事件操作字符串
,事件标签字符串
,日期时间
来自“/Data/{date:yyyy}/{date:MM}/{date:dd}/mydata.json”
使用新的JsonExtractor()
输出@a
至“/Output/mydata.Csv”
使用Outputters.Csv(outputhreader:true);
如您所见,现在有一个类型为DateTime
的附加列date
,可用于查询和/或包含在输出中。感谢您的回复!我试过你的建议,但它给了我一个错误。因此,我在星号周围添加了“{*}”,查询通过了“准备”和“排队”阶段,但在“运行”时失败。错误是:的Newtonsoft.Json.JsonTextReader.Read()处,如果我从“/Data/2018/11/{*}/mydata.Json”改回“/Data/2018/11/1/mydata.Json”,它又能工作了……你是对的,它应该是{*}而不是{}。您提到的错误表示处理的某个文件中的内容无效。请检查是否有多余的空格或错误的编码等。请尝试另一个日期,如“/Data/2018/10/{*}/mydata.json”。