使用专业服务数据验证工具的行验证时出现IbisTypeError错误

0 投票
1 回答
29 浏览
提问于 2025-04-14 15:22

我正在使用一个开源工具,来比较两个不同数据库中的表格数据,一个在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,并且要去掉所有的引号。

撰写回答