CSV mapping
Applies to: ✅ Azure Data Explorer
Use CSV mapping to map incoming data to columns inside tables when your ingestion source file is any of the following delimiter-separated tabular formats: CSV, TSV, PSV, SCSV, SOHsv, TXT and RAW. For more information, see supported data formats.
Each element in the mapping list defines the mapping for a specific column. These elements are constructed from three properties: column
, datatype
, and properties
. Learn more in the data mappings overview.
Each CSV mapping element must contain either of the following optional properties:
Property | Type | Description |
---|---|---|
Ordinal | int |
The column order number in CSV. |
ConstValue | string |
The constant value to be used for a column instead of some value inside the CSV file. |
Transform | string |
Transformation that should be applied on the content with mapping transformations. The only supported transformation by is SourceLocation . |
Note
- When
ConstValue
orSourceLocation
transformation are used,Ordinal
must be unset. - For TXT and RAW formats, only
Ordinal
0 can be mapped, as text is treated as a single column of lines.
Important
For queued ingestion:
- If the table referenced in the mapping doesn't exist in the database, it gets created automatically, given that valid data types are specified for all columns.
- If a column referenced in the mapping doesn't exist in the table, it gets added automatically to the table as the last column upon the first time data is ingested for that column, given a valid data type is specified for the column. To add new columns to a mapping, use the .alter ingestion mapping command.
- Data is batched using Ingestion properties. The more distinct ingestion mapping properties used, such as different ConstValue values, the more fragmented the ingestion becomes, which can lead to performance degradation.
Examples
[
{"Column": "event_time", "Properties": {"Ordinal": "0"}},
{"Column": "event_name", "Properties": {"Ordinal": "1"}},
{"Column": "event_type", "Properties": {"Ordinal": "2"}},
{"Column": "ingestion_time", "Properties": {"ConstValue": "2023-01-01T10:32:00"}}
{"Column": "source_location", "Properties": {"Transform": "SourceLocation"}}
]
The mapping above is serialized as a JSON string when it's provided as part of the .ingest
management command.
.ingest into Table123 (@"source1", @"source2")
with
(
format="csv",
ingestionMapping =
```
[
{"Column": "event_time", "Properties": {"Ordinal": "0"}},
{"Column": "event_name", "Properties": {"Ordinal": "1"}},
{"Column": "event_type", "Properties": {"Ordinal": "2"}},
{"Column": "ingestion_time", "Properties": {"ConstValue": "2023-01-01T10:32:00"}},
{"Column": "source_location", "Properties": {"Transform": "SourceLocation"}}
]
```
)
Pre-created mapping
When the mapping is pre-created, reference the mapping by name in the .ingest
management command.
.ingest into Table123 (@"source1", @"source2")
with
(
format="csv",
ingestionMappingReference = "MappingName"
)
Identity mapping
Use CSV mapping during ingestion without defining a mapping schema (see identity mapping).
.ingest into Table123 (@"source1", @"source2")
with
(
format="csv"
)