Azure Data Factory数据流:如何查看派生列输出类型并解决Snowflake类型错误
查看派生列实际类型的方法及问题排查
查看派生列实际类型的几种方式
借助ETL工具的预览/元数据功能
如果使用Azure Synapse Data Flow这类工具,直接打开数据预览(Data Preview),选中包含派生列的数据流步骤,右侧列详情面板会显示该列的实际数据类型和长度。如果是Spark环境,直接打印DataFrame的Schema:df.printSchema()临时写入测试表后查询Snowflake元数据
将包含派生列的数据临时写入Snowflake测试表,执行以下SQL查询列的实际类型:SELECT DATA_TYPE, CHARACTER_MAXIMUM_LENGTH FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'YOUR_SCHEMA' AND TABLE_NAME = 'TEST_TABLE' AND COLUMN_NAME = 'YOUR_DERIVED_COLUMN';分析表达式的返回逻辑
sha2(256, 'my data')生成64位十六进制字符串(对应32字节二进制数据),若toBinary()是将十六进制字符串解析为二进制,结果应为32字节BINARY类型;若工具的toBinary是直接将字符串按字符编码转二进制,结果会是64字节BINARY类型——这两种情况都可能和目标列BINARY(64)产生匹配问题。
关于DF-Snowflake-InvalidDataT错误的建议
该错误大概率是数据类型/长度不匹配导致的:
- 如果派生列实际是32字节BINARY,建议将Snowflake目标列调整为
BINARY(32); - 如果工具的
toBinary行为不符合预期,可尝试用hex_decode_string(部分工具支持)替代toBinary,确保输出为32字节二进制数据。
内容的提问来源于stack exchange,提问作者Stephen
相关产品推荐
相关产品推荐

