大型数据集,不同数据库之间的数据比较不兼容

Posted

技术标签:

【中文标题】大型数据集,不同数据库之间的数据比较不兼容【英文标题】:Large dataset with incompatible data comparison across various databases 【发布时间】:2019-02-06 18:42:18 【问题描述】:

我们在 mysql 和 Big Query 之间运行了同步管道, 我想比较一些关键表,但它们在百万行中相当大,每列多达 50 多列。 我曾尝试使用 CSV 转储,并以这种方式进行比较,但也存在数据类型不兼容问题(即日期表示)

如何进行大数据比较?

【问题讨论】:

【参考方案1】:

现在关于使用endly 比较任何数据库, where directives 部分允许指定索引表达式(唯一列组合)、所需的日期格式和其他比较选项。

您可以简单地使用如下所示的简单工作流名称运行。

endly -r=compare

@compare.yaml

pipeline:
  register:
    mysqldb:
      action: dsunit:register
        datastore: myMySQLdataset
        config:
          driverName: mysql
          descriptor: '[username]:[password]@tcp(127.0.0.1:3306)/[dbname]?parseTime=true'
          parameters:
            dbname: myMySQLdataset
            username: myUsername
            password: myPassowrd

    bigquerydb:
      action: dsunit:register
      datastore: myBQdataset
      config:
        driverName: bigquery
        parameters:
          datasetId: myBQdataset

  compare:
    action: dsunit:compare
    maxRowDiscrepancy: 1000000

    directives:
      "@indexBy@": id,otherUniqueColumn
      "@numericPrecisionPoint@": 7
      "@coalesceWithZero@": true
      "@caseSensitive@": false
      "@timeFormat@myDateColumn": 'yyyy-MM-dd'
    source1:
      datastore: myMySQLdataset
      SQL: SELECT *
           FROM table1

    source2:
      datastore: myBQdataset
      SQL: SELECT *
           FROM table1

【讨论】:

以上是关于大型数据集,不同数据库之间的数据比较不兼容的主要内容,如果未能解决你的问题,请参考以下文章

weka中的训练和测试集不兼容错误?

如何解决数据类型 ntext 和 varchar 在not equal to 运算符中不兼容?

错误修复程序和测试集如何不兼容?

Python 2和3之间numpy数组的pickle不兼容

Fashion Mnist TensorFlow 数据形状不兼容

Weka 中的训练和测试集不兼容