如何在Azure Data Lake Analytics usql的上下文中使用JSON文件格式

如何在Azure Data Lake Analytics usql的上下文中使用JSON文件格式,json,azure,azure-data-lake,u-sql,data-lake,Json,Azure,Azure Data Lake,U Sql,Data Lake,我有一个JSON输入,看起来像 { "sessionId": 1234, "deviceId": "MAC:1234", "IoTHub": { "MessageId": "1234-1234-1234-1234" } } 如何在Azure Datalake Analytics usql脚本中提取sessionId、deviceId和MessageId的值?如何在Azure Datalake Analytics usql的上下文中使用JSON文件

我有一个JSON输入,看起来像

{
    "sessionId": 1234,
    "deviceId": "MAC:1234",
    "IoTHub": {
        "MessageId": "1234-1234-1234-1234"
    }
}
如何在Azure Datalake Analytics usql脚本中提取
sessionId
deviceId
MessageId
的值?

如何在Azure Datalake Analytics usql的上下文中使用JSON文件格式 建立过程
  • 从[1]下载回购协议
    • \Examples\DataFormats\Microsoft.Analytics.Samples.sln
    • 构建解决方案
    • 获取
      \Examples\DataFormats\Microsoft.Analytics.Samples.Formats\bin\Debug\Microsoft.Analytics.Samples.Formats.dll
    • 获取
      \Examples\DataFormats\Microsoft.Analytics.Samples.Formats\bin\Debug\Newtonsoft.Json.dll
  • 在ADL中,创建用于存储程序集的文件夹(例如
    \assemblies
    • 如果示例文件消失(发生在我身上),请在文件夹中创建一个示例文件
  • 使用Visual Studio:
    • 将这两个文件添加到ADLA解决方案的文件夹中(例如,
      \lib\…
    • 打开
      云资源管理器
      ,导航到ADLA数据库->程序集->右键单击并注册程序集
      • 将程序集存储在ADLS中之前创建的文件夹中
  • 参考如下所示的组件
用法 JSON输入数据
  • 使用拔取器,如下图所示
    • 有关更多信息,请参见[2]和[3]
资源 [1]

[2]

[3]


U-SQL脚本
DECLARE @localDevelopment bool = true;

IF @localDevelopment == true THEN
    DROP ASSEMBLY IF EXISTS [Newtonsoft.Json];
    DROP ASSEMBLY IF EXISTS [Microsoft.Analytics.Samples.Formats];
    CREATE ASSEMBLY [Newtonsoft.Json] FROM @"/lib/Newtonsoft.Json.dll";
    CREATE ASSEMBLY [Microsoft.Analytics.Samples.Formats] FROM @"/lib/Microsoft.Analytics.Samples.Formats.dll";
    DECLARE @input string = @"/data/input.json";
    DECLARE @output string = @"/data/output.csv";
ELSE
    DECLARE @input string = @"/data/input.json";
    DECLARE @output string = @"/data/output.csv";
END;

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

//Define schema of file, must map all columns
//Names must match keys
@extractDataFirstLevel = 
    EXTRACT sessionId int,
            deviceId string,
            IoTHub string
            //Date DateTime
    FROM @input
    USING new Microsoft.Analytics.Samples.Formats.Json.JsonExtractor();

@selectData =
    SELECT sessionId,
           deviceId,
           Microsoft.Analytics.Samples.Formats.Json.JsonFunctions.JsonTuple(IoTHub)["MessageId"] AS messageId
    FROM @extractDataFirstLevel;

OUTPUT @selectData
TO @output
USING Outputters.Csv();