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