Share via


Parquet マッピング

取り込みソース ファイルが Parquet 形式の場合は、Parquet マッピングを使用して、受信データをテーブル内の列にマップします。

マッピング リストの各要素は、特定の列のマッピングを定義します。 これらの要素は、、datatype、および propertiesの 3 つのプロパティcolumnから構築されます。 詳細については、 データ マッピングの概要に関するページを参照してください

各 Parquet マッピング要素には、次のいずれかの省略可能なプロパティが含まれている必要があります。

プロパティ Type 説明
フィールド string Parquet レコード内のフィールドの名前。
パス string 値がで $ 始まる場合は、テーブル内の列の内容となる Parquet ドキュメント内のフィールドへのパスとして解釈されます。 Parquet レコード全体を示すパスは です $。 値がで始 $ まらない場合は、定数値として解釈されます。 特殊文字を含むパスは、['Property Name'] としてエスケープする必要があります。 詳しくは、「JSONPath 構文」を参照してください。
ConstValue string Parquet ファイル内の値ではなく、列に使用される定数値。
変換 string マッピング変換を使用してコンテンツに適用 する必要がある変換

注意

フィールドとパスは相互に排他的です。

次の代替手段は同等です。

[
  {"Column": "event_name", "Properties": {"Path": "$.EventName"}}
]
[
  {"Column": "event_name", "Properties": {"Field": "EventName"}}
]

重要

キューインジェストの場合:

  • マッピングで参照されているテーブルがデータベースに存在しない場合は、すべての列に対して有効なデータ型が指定されている場合に、テーブルが自動的に作成されます。
  • マッピングで参照されている列がテーブル内に存在しない場合は、列に対して有効なデータ型が指定されている場合、その列に対して最初にデータが取り込まれるときの最後の列として、テーブルに自動的に追加されます。 マッピングに新しい列を追加するには、 .alter ingestion mapping コマンドを使用します。
  • データはインジェスト プロパティを使用してバッチ処理されます。 異なる ConstValue 値など、より明確なインジェスト マッピング プロパティが使用されると、インジェストの断片化が増え、パフォーマンスが低下する可能性があります。

Parquet 型の変換

Parquet ソースからデータを取り込んだりクエリを実行したりするときに、データ型を変換するための包括的なサポートが提供されます。

次の表は、Parquet フィールド型のマッピングと、変換可能なテーブル列の型を示しています。 最初の列には Parquet 型が一覧表示され、他の列には変換先のテーブル列の型が表示されます。

注意

パルケスト DECIMAL 型の場合、物理型は次のようにかっこで囲んで指定します。

  • I32: INT32 (32 ビット整数)
  • I64: INT64 (64 ビット整数)
  • FLBA: 固定長バイト配列
  • BA: バイト配列
Parquet 型 [bool] INT long real decimal DATETIME TimeSpan string guid 動的
INT8 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
INT16 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
INT32 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
INT64 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Uint8 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Uint16 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT32 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT64 ✔️ ✔️ ✔️ ✔️ ✔️
FLOAT32 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Float64 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
BOOLEAN ✔️ ✔️ ✔️
DECIMAL (I32) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
DECIMAL (I64) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
DECIMAL (FLBA) ✔️ ✔️ ✔️ ✔️
DECIMAL (BA) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
timestamp ✔️ ✔️
DATE ✔️ ✔️
STRING ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UUID ✔️ ✔️
JSON ✔️ ✔️
リスト ✔️
MAP ✔️
STRUCT ✔️

[
  {"Column": "event_timestamp", "Properties": {"Path": "$.Timestamp"}},
  {"Column": "event_name",      "Properties": {"Path": "$.Event.Name"}},
  {"Column": "event_type",      "Properties": {"Path": "$.Event.Type"}},
  {"Column": "event_time",      "Properties": {"Path": "$.Timestamp", "Transform": "DateTimeFromUnixMilliseconds"}},
  {"Column": "ingestion_time",  "Properties": {"ConstValue": "2021-01-01T10:32:00"}},
  {"Column": "full_record",     "Properties": {"Path": "$"}}
]

上記のマッピングは、管理コマンドの一部 .ingest として提供されるときに JSON 文字列としてシリアル化されます。

.ingest into Table123 (@"source1", @"source2")
  with
  (
    format = "parquet",
    ingestionMapping =
    ```
    [
      {"Column": "column_a", "Properties": {"Path": "$.Field1.Subfield"}},
      {"Column": "column_b", "Properties": {"Path": "$.[\'Field name with space\']"}},
    ]
    ```
  )

事前に作成されたマッピング

マッピングが 事前に作成されたら、管理コマンドで名前でマッピングを .ingest 参照します。

.ingest into Table123 (@"source1", @"source2")
  with
  (
      format="parquet",
      ingestionMappingReference = "Mapping_Name"
  )

ID のマッピング

マッピング スキーマを定義せずに、インジェスト中に Parquet マッピングを使用します ( ID マッピングに関するページを参照してください)。

.ingest into Table123 (@"source1", @"source2")
  with
  (
    format="parquet"
  )