次の方法で共有


インジェスト マッピング

インジェスト マッピングは、インジェスト中に、受信データをテーブル内の列にマップするために使用されます。

データ エクスプローラーでは、行指向 (CSV、JSON、AVRO、W3CLOGFILE) と列指向 (Parquet および ORC) の両方の異なる種類のマッピングがサポートされています。

インジェスト マッピングは 事前に作成 でき、パラメーターを使用して ingestionMappingReference 取り込みコマンドから参照できます。 ただし、マッピングを指定しなくてもインジェストが可能です。 詳細については、ID マッピングを参照してください

マッピング リスト内の各要素は、次の 3 つのフィールドから構成されます。

プロパティ Required 説明
✔️ テーブル内のターゲット列名。
DataType マップされた列がテーブルにまだ存在しない場合に作成するデータ型。
プロパティ 各特定のマッピングの種類のページで説明されているように、各マッピングに固有のプロパティを含むプロパティ バッグ。

重要

キューに入ったインジェストの場合:

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

サポートされているマッピングの種類

次の表は、特定の形式の外部データの取り込みまたはクエリを実行するときに使用するマッピングの種類を定義します。

データ形式 マッピングの種類
CSV CSV マッピング
TSV CSV マッピング
TSVe CSV マッピング
PSV CSV マッピング
SCSV CSV マッピング
SOHsv CSV マッピング
TXT CSV マッピング
RAW CSV マッピング
JSON JSON マッピング
AVRO AVRO マッピング
APACHEAVRO AVRO マッピング
Parquet Parquet マッピング
ORC ORC マッピング
W3CLOGFILE W3CLOGFILE マッピング

ID のマッピング

ingestionMapping または ingestionMappingReference プロパティを指定せずにインジェストを行うことができます。 データは、テーブルのスキーマから派生した ID データ マッピングを使用してマップされます。 テーブル スキーマは変更されません。 format プロパティを指定する必要があります インジェスト形式を参照してください

形式の種類 形式 マッピング ロジック
区切り記号で区切られた形式や単一行の形式など、列の順序が定義された表形式のデータ形式。 CSV、TSV、TSVe、PSV、SCSV、Txt、SOHsv、Raw すべてのテーブル列は、データ ソースに表示される順序でデータ列にマップされます。 列のデータ型はテーブル スキーマから取得されます。
名前付き列または名前付きフィールドを含むレコードを書式設定します。 JSON、Parquet、Avro、ApacheAvro、Orc、W3CLOGFILE すべてのテーブル列は、同じ名前のデータ列またはレコード フィールドにマップされます (大文字と小文字は区別されます)。 列のデータ型はテーブル スキーマから取得されます。

警告

テーブル スキーマとデータの構造 (列またはフィールドのデータ型、列またはフィールドの名前、数など) が一致しないと、取り込まれるデータが空または不正確になる可能性があります。

マッピング変換

一部のデータ形式マッピング (Parquet、JSON、AVRO) では、簡単で便利な取り込み時の変換がサポートされています。 取り込み時により複雑な処理を必要とするシナリオでは、更新ポリシーを使用します。これにより、KQL 式を使用した簡易処理が可能になります。

パスに依存する変換 説明 条件
PropertyBagArrayToDictionary などの {events:[{"n1":"v1"},{"n2":"v2"}]}プロパティの JSON 配列をディクショナリに変換し、有効な JSON ドキュメント (例 {"n1":"v1","n2":"v2"}: . 、、AVROおよびマッピングのJSONParquet種類にORC使用できます。
SourceLocation データを提供したストレージ成果物の名前、String 型 (たとえば、BLOB の "BaseUri" フィールド)。 CSV、、JSONParquetAVROORCおよびマッピングの種類にW3CLOGFILE使用できます。
SourceLineNumber そのストレージ成果物を基準としたオフセット、Long 型 ('1' から始まり、新しいレコードごとに増分)。 CSV、、JSONParquetAVROORCおよびマッピングの種類にW3CLOGFILE使用できます。
DateTimeFromUnixSeconds unix-time (1970-01-01 以降の秒) を表す数値を UTC 日時文字列に変換します。 、、AVROおよびマッピングのJSONParquet種類にORC使用できます。
DateTimeFromUnixMilliseconds unix-time (1970-01-01 以降のミリ秒) を表す数値を UTC 日時文字列に変換します。 、、AVROおよびマッピングのJSONParquet種類にORC使用できます。
DateTimeFromUnixMicroseconds unix-time (1970-01-01 以降のマイクロ秒) を表す数値を UTC 日時文字列に変換します。 、、AVROおよびマッピングのJSONParquet種類にORC使用できます。
DateTimeFromUnixNanoseconds unix-time (1970-01-01 以降のナノ秒) を表す数値を UTC 日時文字列に変換します。 、、AVROおよびマッピングのJSONParquet種類にORC使用できます。
DropMappedFields JSON ドキュメント内のオブジェクトを列にマップし、他の列マッピングによって既に参照されている入れ子になったフィールドをすべて削除します。 、、AVROおよびマッピングのJSONParquet種類にORC使用できます。
BytesAsBase64 データをバイト配列として扱い、base64 でエンコードされた文字列に変換します。 マッピングの種類に AVRO 使用できます。 形式の場合ApacheAvro、マップされたデータ フィールドのスキーマ型は Avro 型であるbytesfixed必要があります。 書式の場合 Avro 、フィールドは [0 - 255] 範囲のバイト値を含む配列である必要があります。 null は、データが有効なバイト配列を表さない場合に取り込まれます。

マッピング変換の例

DropMappedFields 変換:

次の JSON コンテンツを指定します。

{
    "Time": "2012-01-15T10:45",
    "Props": {
        "EventName": "CustomEvent",
        "Revenue": 0.456
    }
}

次のデータ マッピングでは、オブジェクト全体 Props が動的列 Props にマップされますが、既にマップされている列は除外されます (Props.EventName 既に列 EventNameにマップされているため、除外されます)。

[
    { "Column": "Time", "Properties": { "Path": "$.Time" } },
    { "Column": "EventName", "Properties": { "Path": "$.Props.EventName" } },
    { "Column": "Props", "Properties": { "Path": "$.Props", "Transform":"DropMappedFields" } },
]

取り込まれたデータは次のようになります。

時刻 EventName prop
2012-01-15T10:45 CustomEvent {"Revenue": 0.456}

BytesAsBase64 変換

次の AVRO ファイルの内容を指定します。

{
    "Time": "2012-01-15T10:45",
    "Props": {
        "id": [227,131,34,92,28,91,65,72,134,138,9,133,51,45,104,52]
    }
}

次のデータ マッピングでは、変換の有無にかかわらず ID 列が 2 回マップされます。

[
    { "Column": "Id", "Properties": { "Path": "$.props.id" } },
    { "Column": "Base64EncodedId", "Properties": { "Path": "$.props.id", "Transform":"BytesAsBase64" } },
]

取り込まれたデータは次のようになります。

Id Base64EncodedId
[227,131,34,92,28,91,65,72,134,138,9,133,51,45,104,52] 44MiXBxbQUiGigmFMy1oNA==