使用专业服务数据验证工具的行验证时出现IbisTypeError错误
我正在使用一个开源工具,来比较两个不同数据库中的表格数据,一个在MSSQL,另一个在Snowflake,逐行对比。
这两个数据库的连接设置都没问题。我可以成功运行行数比较,并通过下面的命令得到了行数:
data-validation validate column -sc snowflake -tc snowflake -tbls MY_SCH.MY_TABLE
但是在进行逐行比较时遇到了问题。作为测试,我尝试将一个Snowflake表与它自己进行比较。命令如下:
data-validation validate row -sc snowflake -tc snowflake -tbls MY_SCH.MY_TABLE --primary-keys MY_PRIMARY_KEY --hash '*'
这里的内容解释一下:
row
: 数据验证的类型,-sc
: 源连接,-tc
: 目标连接,tbls
: 表名,--primary-keys
: 用于在两个表之间匹配的主键列,--hash
:*
表示验证所有字段,或者列出特定字段的名称。
接着出现了错误信息,我尝试比较不同的表、选择不同的列,使用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
这个数据验证工具的Github仓库在这里: https://github.com/GoogleCloudPlatform/professional-services-data-validator
希望能得到一些建议!
1 个回答
0
答案如下:
data-validation validate row -sc snowflake -tc snowflake -tbls MY_SCH.MY_TABLE=MY_SCH.MY_TABLE --primary-keys MY_PRIMARY_KEY --hash *
关键是要按照参数 -tbls 的格式来写,格式是 MY_SCH.MY_TABLE=MY_SCH.MY_TABLE
,并且要去掉所有的引号。