你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
AVRO 映射
适用于:✅Microsoft Fabric✅Azure 数据资源管理器
当引入源文件采用 AVRO 格式时,请使用 AVRO 映射将传入数据映射到表内的列。
映射列表中的每个元素定义特定列的映射。 这些元素通过这三个属性进行构造:column
、datatype
和 properties
。 有关详细信息,请参阅数据映射概述。
每个 AVRO 映射元素都必须包含以下可选属性之一:
属性 | 类型 | 说明 |
---|---|---|
字段 | string |
AVRO 记录中字段的名称。 |
路径 | string |
如果值以 $ 开头,则它被视为 AVRO 文档中字段的路径。 此路径指定 AVRO 文档的一部分,该部分将成为表中列的内容。 表示整个 AVRO 记录的路径为 $ 。 如果该值不以 $ 开头,则它被视为常量值。 包含特殊字符的路径应当以 ['属性名称'] 格式进行转义。 有关详细信息,请参阅 JSONPath 语法。 |
ConstValue | string |
要用于列而非 AVRO 文件内某个值的常数值。 |
转换 | string |
应通过映射转换应用于内容的转换。 |
注意
Field 和 Path 互斥。
以下替代方法等效:
[
{"Column": "event_name", "Properties": {"Path": "$.EventName"}}
]
[
{"Column": "event_name", "Properties": {"Field": "EventName"}}
]
重要
对于排队引入:
- 如果映射中引用的表不存在于数据库中,则会自动创建该表,前提是为所有列指定了有效的数据类型。
- 如果映射中引用的某个列在表中不存在,则在首次为该列引入数据时,会自动将该列添加为表中的最后一列,前提是为该列指定了有效的数据类型。 若要向映射添加新列,请使用 .alter ingestion mapping 命令。
- 使用引入属性对数据进行批处理。 使用的引入映射属性越不同(例如不同的 ConstValue 值),引入就越分散,这可能会导致性能下降。
示例
JSON 序列化
以下示例映射在作为 .ingest
管理命令的一部分提供时序列化为 JSON 字符串。
[
{"Column": "event_timestamp", "Properties": {"Field": "Timestamp"}},
{"Column": "event_name", "Properties": {"Field": "Name"}},
{"Column": "event_type", "Properties": {"Field": "Type"}},
{"Column": "event_time", "Properties": {"Field": "Timestamp", "Transform": "DateTimeFromUnixMilliseconds"}},
{"Column": "ingestion_time", "Properties": {"ConstValue": "2021-01-01T10:32:00"}},
{"Column": "full_record", "Properties": {"Path": "$"}}
]
此处,序列化的 JSON 映射包含在 .ingest
管理命令的上下文中。
.ingest into Table123 (@"source1", @"source2")
with
(
format = "AVRO",
ingestionMapping =
```
[
{"Column": "column_a", "Properties": {"Field": "Field1"}},
{"Column": "column_b", "Properties": {"Field": "$.[\'Field name with space\']"}}
]
```
)
预创建映射
当映射 预创建时,请按名称在 .ingest
管理命令中引用映射。
.ingest into Table123 (@"source1", @"source2")
with
(
format="AVRO",
ingestionMappingReference = "Mapping_Name"
)
标识映射
在引入期间使用 AVRO 映射而不定义映射架构(请参阅标识映射)。
.ingest into Table123 (@"source1", @"source2")
with
(
format="AVRO"
)
相关内容
- 使用 avrotize k2a 工具创建 Avro 架构。