USQL Query从Json Data创建表
我有一个类似于[{}, {}, {}]
的json,即可以有多行,每行有许多属性 – 值对,每行保持固定。
@json = EXTRACT MainId string, Details string FROM @INPUT_FILE USING new Microsoft.Analytics.Samples.Formats.Json.JsonExtractor();
这给了我json作为一个字符串。
我不知道如何得到: row[3].property4
就像属性给定行的值。 使属性复杂化的是{Name:“XXX”,Value:“YYY”}
@jsonnodes = SELECT JsonApp.JsonFunctions.JsonTuple(@json, "event", "id") AS json_map FROM @json;
现在,上面的查询我试过,但它没有用。
它给了我错误:
Rowset variable '@json' is not a scalar variable.
我如何获得行属性对并将它们放在csv文件或表中?
谢谢你的帮助。
JSON看起来像:
[{"MainId":"24201803","System":[{"Name":"event","Value":"S"},{"Name":"id","Value":""}], "Details":[{"Name":"EventName","Value":"W"},{"Name":"previd","Value":"88"}], "ttl":8640000}, ....Multiple Rows of the Same type as before....]
我想要的输出是:
表列= MainId | System.event | System.id | Details.EventName | Details.previd | TTL
表的行的值将由具有相应属性值的行填充(如在json行中)。
在我的小测试用例中找到了一个下面的解决方案 – 我同意{“Name:’XXX’,Value:’YYY’}格式化会让事情变得有点棘手,但你仍然可以在没有自定义提取器的情况下完成这些工作 – 只需很多嵌套的JSON。
基本上,您从System和Details JSON(在@parse_json中)中提取SQLArray,然后将它们拆分为较小的JSON元组(在@get_nested中),最后在@output中提取“Values”。 见下面的代码。 如果您有疑问,请告诉我!
上述就是C#学习教程:USQL Query从Json Data创建表分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
CREATE ASSEMBLY [Microsoft.Analytics.Samples.Formats] FROM @FormatsAssembly; CREATE ASSEMBLY [Newtonsoft.Json] FROM @JSONAssembly; REFERENCE ASSEMBLY [Newtonsoft.Json]; REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats]; DECLARE @CommentsPath = "/JSONTest/rawJson.json"; @get_json = EXTRACT MainId int, System string, Details string, ttl int FROM @CommentsPath USING new Microsoft.Analytics.Samples.Formats.Json.JsonExtractor(); @parse_json = SELECT MainId, Microsoft.Analytics.Samples.Formats.Json.JsonFunctions.JsonTuple(System).Values AS SystemJson, Microsoft.Analytics.Samples.Formats.Json.JsonFunctions.JsonTuple(Details).Values AS DetailsJson, ttl FROM @get_json; @get_nested = SELECT MainId, Microsoft.Analytics.Samples.Formats.Json.JsonFunctions.JsonTuple(SystemJson[0]) AS SystemName, Microsoft.Analytics.Samples.Formats.Json.JsonFunctions.JsonTuple(SystemJson[1]) AS SystemId, Microsoft.Analytics.Samples.Formats.Json.JsonFunctions.JsonTuple(DetailsJson[0]) AS DetailsName, Microsoft.Analytics.Samples.Formats.Json.JsonFunctions.JsonTuple(DetailsJson[1]) AS DetailsPrevid, ttl FROM @parse_json; @output = SELECT MainId, SystemName["Value"] AS SystemEvent, SystemId["Value"] AS SystemId, DetailsName["Value"] AS EventName, DetailsPrevid["Value"] AS PrevId, ttl FROM @get_nested; OUTPUT @output TO @"/JSONTest/test1.csv" USING Outputters.Csv(outputHeader : true);
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1013691.html