我有一个TSV文件,一列是一个json字符串,它有一些对象。我需要根据jsonarray将行转换为多行。你能指导我提取数据吗?
示例行: 产品ID客户 Azure SQL 465383 [{“客户”:“Dell”,“国家/地区”:“美国”},{“客户”:“HP”,“国家/地区”:“德国”}]
预期产出: 产品ID客户所在国家 Azure SQL 465383 Dell US Azure SQL 465383 HP德国
提前致谢!
答案 0 :(得分:2)
您可以在github here中提供的Microsoft.Analytics.Samples.Formats JSON示例中使用JsonTuple
方法。如果您不确定如何安装它们,请按照此处的教程进行操作。
例如,我使用this file来使用此脚本。
REFERENCE ASSEMBLY [Newtonsoft.Json];
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];
USING Microsoft.Analytics.Samples.Formats.Json;
DECLARE @inputFile string = "/input/input103.tsv";
@input =
EXTRACT Product string,
id string,
Customers string // JSON column
FROM @inputFile
USING Extractors.Tsv(skipFirstNRows:1);
// Convert Customer JSON string to tuple
@working =
SELECT Product,
id,
JsonFunctions.JsonTuple(Customers).Values AS Customers_map
FROM @input;
// Explode the MAP to get a row per key-value pair
@output =
SELECT Product,
id,
JsonFunctions.JsonTuple(y) ["Customer"] AS Customer,
JsonFunctions.JsonTuple(y) ["Country"] AS Country
FROM @working
CROSS APPLY
EXPLODE(Customers_map) AS x(y);
OUTPUT @output
TO "/output/output.csv"
USING Outputters.Csv();
我的结果: