如何在未知CSV Schema时从Blob存储引入数据到新建Kusto表
可行性说明
你期望的externaldata(*)自动识别CSV全列schema、无需提前定义表结构直接建表导入的写法,Kusto目前原生不支持。externaldata运算符强制要求显式传入完整的列schema定义,不支持用通配符跳过schema声明自动解析CSV结构。
可落地的实现方案
- 自动建表导入方案
你可以用Kusto受控引入的自动建表能力,不需要提前创建表、不需要提前配置列映射,系统会自动读取CSV首行表头作为列名,默认将所有列设为string类型,自动创建目标表完成导入,命令示例:
这个方案的局限是自动生成的表所有字段默认都是字符串类型,如果你需要数值、时间等其他类型的字段,导入完成后单独执行schema修改命令调整对应字段类型即可。.ingest into table testtable ( h@"https://test.blob.core.windows.net/cont/test1.csv?...SAS..." ) with( format = "csv", firstRowIsHeader = true, autoCreateTable = true ) - 全表替换效果适配
如果你需要实现示例代码里.set-or-replace的全量替换表数据的效果,可以先按上面的命令把数据导入临时表,校验数据无误后通过.set-or-replace把临时表数据写入正式表,再清理临时表;第一次导入拿到自动生成的表schema后,后续的替换操作也可以直接使用明确的schema定义执行命令。
补充说明
- 自动建表逻辑依赖CSV首行的标准表头,如果你的CSV文件没有表头行,自动生成的列会按顺序命名为
Column1、Column2……以此类推。 - 如果CSV同列下存在多种类型的值,建议建表后手动调整字段类型,避免后续查询触发隐式类型转换报错。
内容的提问来源于stack exchange,提问作者PorgtheEaten
相关产品推荐
相关产品推荐

