【问题标题】:Syntax error on U-SQL Script to get data from JSON complex type从 JSON 复杂类型获取数据的 U-SQL 脚本语法错误
【发布时间】:2018-08-28 22:25:49
【问题描述】:

这是我的输入 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();

这个脚本给了我一个语法错误消息“syntax error. Expected one of: '.'

我该如何解决这个问题?

【问题讨论】:

  • 请在您的 csv 文件中定义您想要的列。

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


【解决方案1】:

我发现以前有人回答过这个问题:

@resultset = 
    EXTRACT 

        item string, 
        jsonversion int, 
        messageType int, 
        velocity float
    FROM @input
   USING new Microsoft.Analytics.Samples.Formats.Json.JsonExtractor("data[*]");

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    相关资源
    最近更新 更多