C# U-SQL仅从JSON提取特定数据
我有一个JSON文件,其中包含一个对象数组C# U-SQL仅从JSON提取特定数据,c#,json,u-sql,jsonparser,C#,Json,U Sql,Jsonparser,我有一个JSON文件,其中包含一个对象数组 { [ {id:1, a:4}, {id:2, a:7}, {id:3, a:5}, {id:4, a:9} ] } 如何编写一个U-SQL脚本来只提取第一个对象{id:1,a:4} 在JSON程序集的文档中找不到JsonExtractor是否实际使用了一个JSONPath字符串作为参数,但它确实使用了一个字符串,而对于其他文章中读取的内容,它是一个类似于JSONPath的字符串 注意:此对象不是真实
{
[
{id:1, a:4},
{id:2, a:7},
{id:3, a:5},
{id:4, a:9}
]
}
如何编写一个U-SQL脚本来只提取第一个对象{id:1,a:4}
在JSON程序集的文档中找不到JsonExtractor是否实际使用了一个JSONPath字符串作为参数,但它确实使用了一个字符串,而对于其他文章中读取的内容,它是一个类似于JSONPath的字符串
注意:此对象不是真实对象。我的要求是获得阵列的第一个。如果值“id”始终从1开始按顺序排列,则不可能匹配where字段,您可以使用where子句:
@RawData =
EXTRACT id int,
a int
FROM @InputPath
USING new USING new Microsoft.Analytics.Samples.Formats.Json.JsonExtractor();
@CleanData
SELECT id int,
a int
FROM @RawData
WHERE id == 1;
如果值“id”总是从1开始按顺序排列,则可以使用WHERE子句:
@RawData =
EXTRACT id int,
a int
FROM @InputPath
USING new USING new Microsoft.Analytics.Samples.Formats.Json.JsonExtractor();
@CleanData
SELECT id int,
a int
FROM @RawData
WHERE id == 1;
找到了答案
结果表明,JsonExtract确实接收到一个字符串参数,它是一个JSONPath,但是当您使用如图所示的文件时,其中第一个元素是一个未命名的数组,它假设每个对象都是不同的JSON
在这里,您可以找到说明问题的
就我而言,你有两条出路: 实现您自己的提取器来处理这种情况 或 如果可以,重建输入JSON,以便命名数组
{
data: [
{id:1, a:4},
{id:2, a:7},
{id:3, a:5},
{id:4, a:9},
]
}
然后可以使用JsonPath提取json的特定部分,如下所示
@RawData =
EXTRACT id int,
a int
FROM @InputPath
USING new JsonExtractor("$.data[0]");
作为结果获取id:1,a:4找到了答案
结果表明,JsonExtract确实接收到一个字符串参数,它是一个JSONPath,但是当您使用如图所示的文件时,其中第一个元素是一个未命名的数组,它假设每个对象都是不同的JSON
在这里,您可以找到说明问题的
就我而言,你有两条出路: 实现您自己的提取器来处理这种情况 或 如果可以,重建输入JSON,以便命名数组
{
data: [
{id:1, a:4},
{id:2, a:7},
{id:3, a:5},
{id:4, a:9},
]
}
然后可以使用JsonPath提取json的特定部分,如下所示
@RawData =
EXTRACT id int,
a int
FROM @InputPath
USING new JsonExtractor("$.data[0]");
得到结果
id:1,a:4
我需要提取,没有满足我需要的where类,我只需要阵列上的第一个I需要提取,没有满足我需要的where类,我只需要阵列上的第一个