CSV 映射

当引入源文件采用以下任何一种分隔符分隔的表格格式时,可使用 CSV 映射将传入数据映射到表内的列:CSV、TSV、PSV、SCSV、SOHsv、TXT 和 RAW。 有关详细信息,请参阅支持的数据格式

映射列表中的每个元素定义特定列的映射。 这些元素通过这三个属性进行构造:columndatatypeproperties。 有关详细信息,请参阅数据映射概述

每个 CSV 映射元素都必须包含以下可选属性之一:

属性 类型​​ 说明
Ordinal int CSV 中的列顺序号。
ConstValue string 要用于列而非 CSV 文件内某个值的常数值。
转换 string 应通过映射转换应用于内容的转换。 唯一支持的转换是 SourceLocation

注意

  • 使用 ConstValueSourceLocation 转换时,必须取消设置 Ordinal
  • 对于 TXT 和 RAW 格式,只能映射 Ordinal 0,因为文本被视为单列行。

重要

对于排队引入:

  • 如果映射中引用的表不存在于数据库中,则会自动创建该表,前提是为所有列指定了有效的数据类型。
  • 如果映射中引用的某个列在表中不存在,则在首次为该列引入数据时,会自动将该列添加为表中的最后一列,前提是为该列指定了有效的数据类型。 若要向映射添加新列,请使用 .alter ingestion mapping 命令
  • 使用引入属性对数据进行批处理。 使用的引入映射属性越不同(例如不同的 ConstValue 值),引入就越分散,这可能会导致性能下降。

示例

[
  {"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"}}
]

当上述映射作为 .ingest 管理命令的一部分提供时,它将被序列化为 JSON 字符串。

.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"}}
        ]
        ```
    )

预先创建的映射

预先创建映射后,请在 .ingest 管理命令中按名称引用映射。

.ingest into Table123 (@"source1", @"source2")
    with
    (
        format="csv",
        ingestionMappingReference = "MappingName"
    )

标识映射

在引入期间使用 CSV 映射而不定义映射架构(请参阅标识映射)。

.ingest into Table123 (@"source1", @"source2")
    with
    (
        format="csv"
    )