如何在 U-SQL 中将每个 JSON 数组元素显示为一行中的逗号分隔元素,而不是每行一个元素?
例如,JSON 文件是:
{
"A": {
"A1": "1",
"A2": 0
},
"B": {
"B1": "1",
"B2": 0
},
"C": {
"C1": [
{
"D1": "1"
},
{
"D2": "2"
},
{
"D3": "3"
},
{
"D4": "4"
},
{
"D5": "5"
},
{
"D6": "6"
},
{
"D7": "7"
}
]
}
}
为数组 C1 处理这个片段的代码如下:
@sql = SELECT
Microsoft.Analytics.Samples.Formats.Json.JsonFunctions.JsonTuple(C)["C1"] AS C1_array
FROM @json;
OUTPUT @sql TO "test.txt" USING Outputters.Csv(quoting: false);
@sql2 = SELECT
Microsoft.Analytics.Samples.Formats.Json.JsonFunctions.JsonTuple(C1_array) AS C1
FROM @sql
CROSS APPLY
EXPLODE (Microsoft.Analytics.Samples.Formats.Json.JsonFunctions.JsonTuple(C1_array).Values) AS D(C1);
@result =
SELECT C1["D1"]AS D1,
C1["D2"] AS D2,
C1["D3"]AS D3,
C1["D4"]AS D4,
C1["D5"]AS D5,
C1["D6"]AS D6,
C1["D7"]AS D7,
FROM @sql2;
OUTPUT @result TO "output.txt" USING Outputters.Text();
所有数组元素都打印为每行一个的结果,即所有 D1 到 D7 元素都在不同的行上。我希望 D1 到 D7 元素成为同一行的一部分,因为它是 JSON 对象的一部分。
那是:
1、2、3、4、5、6、7
如何才能做到这一点?