使用professional-services-data-validator行验证时遇IbisTypeError求助
解决professional-services-data-validator逐行验证时的IbisTypeError问题
问题场景
使用professional-services-data-validator工具进行MSSQL与Snowflake表的逐行数据对比时,列计数验证可正常执行:
data-validation validate column -sc snowflake -tc snowflake -tbls MY_SCH.MY_TABLE
但执行逐行验证(包括Snowflake表自对比、更换不同表、切换到SQL Server源/目标)时,均触发以下错误:
File "C:\Users\admin\AppData\Local\Programs\Python\Python310\lib\site-packages\ibis\common\validators.py", line 467, in sequence_of raise IbisTypeError(f'Arg must have at least {min_length} number of elements') ibis.common.exceptions.IbisTypeError: Arg must have at least 1 number of elements
测试用的逐行验证命令:
data-validation validate row -sc snowflake -tc snowflake -tbls MY_SCH.MY_TABLE --primary-keys MY_PRIMARY_KEY --hash '*'
解决建议
替换通配符为具体字段列表
避免使用--hash '*',改为明确指定需要验证的字段,例如:data-validation validate row -sc snowflake -tc snowflake -tbls MY_SCH.MY_TABLE --primary-keys MY_PRIMARY_KEY --hash col1,col2,col3通配符
*可能未被工具正确解析为字段列表,导致Ibis库接收到空序列触发错误。检查主键列的正确性
确保--primary-keys指定的列名与表中实际主键列完全匹配,注意Snowflake的大小写敏感性:- 如果列名是小写或包含特殊字符,需用引号包裹,例如
--primary-keys "my_primary_key" - 确认该列确实存在于目标表中,且数据类型可用于行匹配
- 如果列名是小写或包含特殊字符,需用引号包裹,例如
对齐工具与依赖库版本
查看工具的requirements.txt文件,确认指定的Ibis版本,重新安装对应版本的依赖:pip install ibis-framework==<指定版本>版本不兼容可能导致参数解析逻辑出现异常。
尝试简化验证命令
去掉--hash参数,使用工具默认的逐行对比逻辑,或改用--compare-columns指定字段:data-validation validate row -sc snowflake -tc snowflake -tbls MY_SCH.MY_TABLE --primary-keys MY_PRIMARY_KEY --compare-columns col1,col2
内容的提问来源于stack exchange,提问作者Ray Hector
相关产品推荐
相关产品推荐

