Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure 在USQL中连接来自不同路径的文件_Azure_Azure Data Lake_U Sql - Fatal编程技术网

Azure 在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将所有月份和日期合并到一个文件中。有没有可能在不单独提及每一条路径的情况下,以一种简单的方式来做这件事(否则,一年中的所有日子

我的数据每天保存在以下路径中:“/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”。