私はAzure Data Lake環境で動作するU-SQLアプリケーションを持っています。実際には2つ以上の行を除いて、このようなJSONデータでいっぱいのファイルを処理することになっています。そのデータ湖のジョブでJSONPath:キーと値で単一の辞書を抽出する
[
{"reports" : {"direction": "FWD", "drive": "STOPS", "frob_variable": 0}},
{"reports" : {"direction": "FWD", "drive": "CRANKS", "frob_variable": -3}}
]
、私は次の行を持っている:
@json =
EXTRACT direction string, drive string, frob_variable int FROM @"/input/file.json"
USING new Microsoft.Analytics.Samples.Formats.Json.JsonExtractor("reports");
私はテキストファイルにその@json
変数の内容をダンプするとき、私は空の値を取得:長さゼロの文字列とゼロ評価された整数。私は出力行の正しい数を取得するので、すべての入力を反復処理する必要があります。
JsonExtractor
のソースコードを掘り起こすと、指定されたJsonPathの値( "reports")が埋め込まれたdictで "reports"キーを返しているようです。 "reports。*"というJsonPathの値を試した場合、埋め込み値(例:{ "FWD", "STOPS", 0 }
)を取得しますが、実際にキーが一緒になってほしいので、SELECT direction, drive, frob_variable
は役に立つものを返します。
短いストーリーですが、私はキーを引き出す方法を探していますとの値はその内側の辞書からです。したがって、EXTRACT
からの私の望ましい出力は、列が "direction"、 "drive"、 "frob_variable"で、その値がソースデータに示されている行セットになります。 JsonPathソリューションやU-SQLの簡単な回避策があるはずです。
なるほど参照してください!それが私が探していたものです。 Json-array抽出! – catfood