インジェスト マッピング

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

Data Explorerでは、行指向 (CSV、JSON、AVRO、W3CLOGFILE)、列指向 (Parquet および ORC) の両方の異なる種類のマッピングがサポートされています。

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

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

プロパティ 必須 説明
✔️ テーブル内のターゲット列名。
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 配列をディクショナリに変換し、 などの {"n1":"v1","n2":"v2"}有効な JSON ドキュメントにシリアル化します。 AVROParquet、および マッピング型JSONORC使用できます。
SourceLocation データを提供したストレージ成果物の名前、String 型 (たとえば、BLOB の "BaseUri" フィールド)。 CSVJSONAVROParquetORCおよび マッピング型でW3CLOGFILE使用できます。
SourceLineNumber そのストレージ成果物を基準としたオフセット、Long 型 ('1' から始まり、新しいレコードごとに増分)。 、、ParquetORCAVROおよび W3CLOGFILE のマッピング型でJSON使用できます。
DateTimeFromUnixSeconds unix-time (1970-01-01 以降の秒数) を表す数値を UTC 日時文字列に変換します。 AVROParquet、および マッピング型JSONORC使用できます。
DateTimeFromUnixMilliseconds unix-time (1970-01-01 以降のミリ秒) を表す数値を UTC 日時文字列に変換します。 AVROParquet、および マッピング型JSONORC使用できます。
DateTimeFromUnixMicroseconds unix-time (1970-01-01 以降のマイクロ秒) を表す数値を UTC 日時文字列に変換します。 AVROParquet、および マッピング型JSONORC使用できます。
DateTimeFromUnixNanoseconds unix-time (nanoseconds since 1970-01-01) を表す数値を UTC datetime 文字列に変換します。 AVROParquet、および マッピング型JSONORC使用できます。
DropMappedFields JSON ドキュメント内のオブジェクトを列にマップし、他の列マッピングによって既に参照されている入れ子になったフィールドを削除します。 AVROParquet、および マッピング型JSONORC使用できます。
BytesAsBase64 データをバイト配列として扱い、base64 でエンコードされた文字列に変換します。 マッピングの種類に AVRO 使用できます。 形式の場合ApacheAvro、マップされたデータ フィールドのスキーマ型は または fixed Avro 型であるbytes必要があります。 format の場合 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" } },
]

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

Time 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==