1

次のようなJSON入力があります

{
    "sessionId": 1234,
    "deviceId": "MAC:1234",
    "IoTHub": {
        "MessageId": "1234-1234-1234-1234"
    }
}

Azure Datalake Analytics の usql スクリプトsessionIddeviceIdとの値を抽出するにはどうすればよいですか?MessageId

4

1 に答える 1

1

Azure Data Lake 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
  • ADLS で、アセンブリを保存するフォルダーを作成します (例: .\assemblies) 。
    • 消えたらフォルダにサンプルファイルを作成する(私に起こったこと)
  • Visual Studio の場合:
    • 両方のファイルを ADLA ソリューションのフォルダーに追加します (例: .\lib\...) 。
    • を開き、 ADLACloud Explorerデータベースに移動します -> アセンブリ -> 右クリックしてアセンブリを登録します
      • ADLS で以前に作成したフォルダーにアセンブリを格納します。
  • 以下に示すように、アセンブリを参照してください

使用法

JSON 入力データ

  • 以下に示すように、Extractor を使用します。
    • 詳細については、[2] および [3] を参照してください。

資力

[1] GitHub Azure USQL

[2] GitHub Azure USQL データフォーマット

[3] U-SQL - json-array からデータを抽出する


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();
于 2018-06-26T07:16:23.487 に答える