如何在Azure Data Explorer的Kusto库中为TSV/W3CLOGFILE设置引入映射
ADX 中 TSV、W3CLOGFILE 格式的引入映射配置方案
ADX 的引入映射能力支持所有内置数据格式,TSV 和 W3CLOGFILE 的配置逻辑和公开文档中 CSV 类格式的配置逻辑一致,只需要调整对应的格式参数即可:
TSV 格式映射配置
TSV 属于 CSV 类分隔格式,映射类型直接用 csv,引入时显式指定格式为 tsv 即可自动适配制表符分隔规则,无需额外配置分隔符。
配置示例
- 首先创建目标表:
.create table TsvImportLog (Timestamp:datetime, ClientIP:string, RequestPath:string, ResponseCode:int, ResponseSize:long)
- 创建 TSV 引入映射,
Ordinal对应 TSV 文件中列的顺序,从 0 开始计数:
.create table TsvImportLog ingestion mapping TsvMapping kind = csv format = tsv '[' ' {"column": "Timestamp", "Properties": {"Ordinal": "0"}},' ' {"column": "ClientIP", "Properties": {"Ordinal": "1"}},' ' {"column": "RequestPath", "Properties": {"Ordinal": "2"}},' ' {"column": "ResponseCode", "Properties": {"Ordinal": "3"}},' ' {"column": "ResponseSize", "Properties": {"Ordinal": "4"}}' ']'
如果你的 TSV 文件第一行是表头,创建映射时可以用 Field 属性匹配表头名称,替代 Ordinal,和 CSV 映射的用法完全一致。
W3CLOGFILE 格式映射配置
W3C 标准日志格式的映射类型直接指定为 w3clogfile 即可,ADX 会自动解析日志头部的字段声明,只需要保证映射中 Field 属性的值和日志头部的字段名称完全匹配即可,不需要指定列顺序。
配置示例
- 首先创建目标表:
.create table W3cAccessLog (date:datetime, time:datetime, s_ip:string, cs_method:string, cs_uri_stem:string, sc_status:int, sc_bytes:long, cs_user_agent:string)
- 创建 W3C 日志引入映射:
.create table W3cAccessLog ingestion mapping W3cMapping kind = w3clogfile '[' ' {"column": "date", "Properties": {"Field": "date"}},' ' {"column": "time", "Properties": {"Field": "time"}},' ' {"column": "s_ip", "Properties": {"Field": "s-ip"}},' ' {"column": "cs_method", "Properties": {"Field": "cs-method"}},' ' {"column": "cs_uri_stem", "Properties": {"Field": "cs-uri-stem"}},' ' {"column": "sc_status", "Properties": {"Field": "sc-status"}},' ' {"column": "sc_bytes", "Properties": {"Field": "sc-bytes"}},' ' {"column": "cs_user_agent", "Properties": {"Field": "cs(User-Agent)"}}' ']'
即使日志字段包含短横线、括号等特殊字符,只要和日志头部的原始字段名完全一致即可正常匹配。
Blob 存储内置引入管道关联
配置 ADX 从 Azure Blob Storage 引入的管道时,直接在格式配置步骤做如下选择即可:
- TSV 文件:格式选择
TSV,引入映射选择提前创建的TsvMapping - W3C 日志文件:格式选择
W3CLOGFILE,引入映射选择提前创建的W3cMapping
如果用 Kusto 命令创建事件网格触发的引入连接,参考示例:
.create data connection BlobTsvImport to table TsvImportLog kind = blobstorageeventgrid ( StorageAccountResourceId = '/subscriptions/<你的订阅ID>/resourceGroups/<你的资源组名>/providers/Microsoft.Storage/storageAccounts/<存储账号名>', EventHubResourceId = '/subscriptions/<你的订阅ID>/resourceGroups/<你的资源组名>/providers/Microsoft.EventHub/namespaces/<事件枢纽命名空间>/eventhubs/<事件枢纽名>', ConsumerGroup = '$Default', BlobStorageEventType = 'Microsoft.Storage.BlobCreated' ) with ( Format = 'tsv', IngestionMappingReference = 'TsvMapping', IgnoreFirstRecord = false // TSV第一行是表头则设为true )
内容的提问来源于stack exchange,提问作者anna
相关产品推荐
相关产品推荐

