gpt4 book ai didi

json - USQL 调用读取 json 数组,无需 key

转载 作者:行者123 更新时间:2023-12-02 06:45:50 25 4
gpt4 key购买 nike

我有一个嵌套的 json,我正在尝试在 usql 中压平它。我无法共享数据,但结构与此类似。

{
"userlist": [user1, user1],
"objects": {
"largeobjects": [object1, object2, object3]
"smallobjects": [s_object1, s_object2]
},
"applications": [{
"application": sdq3ds5dsa
}, {
"application": dksah122j4
}, {
"application": sadsw2dq2s
}, {
"application": pro3dfdsn3
}
],
"date" : 12344232,
"timezone" : "Asia",
"id" : "sad2ddssa2",
"admin": {
"lang": "eng",
"country": "us",
}
}

我正在使用自定义 jsonoutputter ( https://github.com/Azure/usql/tree/master/Examples/DataFormats/Microsoft.Analytics.Samples.Formats ) 从 json 文件中提取数据,并使用 jsontuple 函数来提取值。我的问题是该函数使用 sql map 生成键值对。这适用于我有键的情况,但当我尝试使用该函数从无键数组中获取值时,它会抛出错误。

任何有关如何解决此问题的建议将不胜感激。

编辑这是我正在寻找的输出:

sad2ddssa2, object1, 12344232, "亚洲", "英国", "美国",
Sad2ddssa2,object2,12344232,“亚洲”,“英语”,“我们”

最佳答案

第一个选项

尝试在 u-sql 中使用 PROSE。使用 PROSE 的 c# nuget 处理数据并进行复杂的提取。这是一个非常强大的AI包。请参阅此处的视频和示例:https://microsoft.github.io/prose

第二个选项

创建一个 C# 函数来处理您的 json。像这样,使用 c# json api 使此示例适应您的自定义提取请求:

/* Formats the array of values into a named json array. */

DECLARE @JsonArray Func<SqlArray<string>, string, string> = (data, name) =>
{
StringBuilder buffer = new StringBuilder();

buffer.Append("{\r\n\t\"" + name + "\": [\r\n");

for (int i = 0; i < data.Count(); i++)
{
if (i > 0)
{
buffer.Append(",\r\n");
}

buffer.Append("\t\"" + data[i] + "\"");
}

buffer.Append("\r\n\t]\r\n}");

return buffer.ToString();
};

/* Format the array containing groups of comma separated values into a named json array */

@Query =
SELECT
@JsonArray(SubscriptionArray, "subscriptionList") AS JsonArray
FROM @subscriptionsQuery1;

第三个选项

根据您的需求进行调整后尝试此方法:

/* For each json line create a json map (SqlMap) */

@subscriptionsQuery1 =
SELECT
JsonFunctions.JsonTuple(JsonLine) AS JsonMap
FROM @SubscriptionsExtractor AS t;

/* For each json map get the required property value */

@subscriptionsQuery1 =
SELECT DISTINCT
JsonMap["alias"] AS Subscription
FROM @subscriptionsQuery1 AS t;

/* Join the value of all rows into a single row containing an array of all values */

@subscriptionsQuery1 =
SELECT
ARRAY_AGG<string>(Subscription) AS SubscriptionArray
FROM @subscriptionsQuery1 AS t;

关于json - USQL 调用读取 json 数组,无需 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51948903/

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