U-SQL脚本从JSON复杂类型获取数据的语法错误

时间:2018-08-28 14:10:02

标签: azure azure-data-lake u-sql

这是我输入的JSON文件。

[
  {
    "Tag": "STACK007",
    "data": [
      {
        "item": "UNIFY109",
        "timestamp": "2018-08-27T17:28:51.8490000Z",
        "jsonVersion": 1,
        "messageType": 1,
        "velocity": 709
      }
    ],
    "EventProcessedUtcTime": "2018-08-27T17:36:17.5519639Z",
    "EventEnqueuedUtcTime": "2018-08-27T17:28:52.0010000Z"
  }
]

我正在尝试将此输入JSON文件转换为CSV。这是我的U-SQL脚本

REFERENCE ASSEMBLY [Newtonsoft.Json];
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];

USING Microsoft.Analytics.Samples.Formats.Json;

DECLARE @input string = @"/demodata/logs/2018/08/input.json";

@json = 
EXTRACT 
        Tag string, 
        EventProcessedUtcTime DateTime,
        EventEnqueuedUtcTime DateTime,
        JsonFunctions.JsonTuple(data) AS data
  FROM @input 
USING new JsonExtractor();

@result =
SELECT Tag,          
       address["velocity"]AS Velocity,
       address["messageType"]AS MessageType,
       address["timestamp"]AS Timestamp
FROM @json;

OUTPUT @result
TO "/output/demooutput.csv"
USING Outputters.Csv();

此脚本给我一个语法错误,并显示消息“ 语法错误。应为以下之一:'。'

我该如何解决?

1 个答案:

答案 0 :(得分:1)

我发现之前已经回答过:

interface SimpleAB {
     int getA();
     int getB();
}

这是Michael Rys对这个stackoverflow问题的回答: U- SQL Unable to extract data from JSON file

实际上,JSONExtractor支持JSONPath中表示的rowpath参数,该参数使您能够标识要映射到行中的JSON对象或JSON数组项。因此,您可以使用JSON文档中的一条语句