インジェスト マッピング
インジェスト マッピングは、受信データをテーブル内の列にマップするためにインジェスト中に使用されます。
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 ドキュメントにシリアル化します。 |
、 AVRO Parquet 、および マッピング型JSON でORC 使用できます。 |
SourceLocation | データを提供したストレージ成果物の名前、String 型 (たとえば、BLOB の "BaseUri" フィールド)。 | CSV 、JSON AVRO Parquet ORC および マッピング型でW3CLOGFILE 使用できます。 |
SourceLineNumber | そのストレージ成果物を基準としたオフセット、Long 型 ('1' から始まり、新しいレコードごとに増分)。 | 、、Parquet 、 ORC AVRO および W3CLOGFILE のマッピング型でJSON 使用できます。 |
DateTimeFromUnixSeconds | unix-time (1970-01-01 以降の秒数) を表す数値を UTC 日時文字列に変換します。 | 、 AVRO Parquet 、および マッピング型JSON でORC 使用できます。 |
DateTimeFromUnixMilliseconds | unix-time (1970-01-01 以降のミリ秒) を表す数値を UTC 日時文字列に変換します。 | 、 AVRO Parquet 、および マッピング型JSON でORC 使用できます。 |
DateTimeFromUnixMicroseconds | unix-time (1970-01-01 以降のマイクロ秒) を表す数値を UTC 日時文字列に変換します。 | 、 AVRO Parquet 、および マッピング型JSON でORC 使用できます。 |
DateTimeFromUnixNanoseconds | unix-time (nanoseconds since 1970-01-01) を表す数値を UTC datetime 文字列に変換します。 | 、 AVRO Parquet 、および マッピング型JSON でORC 使用できます。 |
DropMappedFields | JSON ドキュメント内のオブジェクトを列にマップし、他の列マッピングによって既に参照されている入れ子になったフィールドを削除します。 | 、 AVRO Parquet 、および マッピング型JSON でORC 使用できます。 |
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== |
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示