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

时间:2019-02-06 18:42:19

标签: mysql google-bigquery etl endly

我们在MySQL和正在运行的Big Query之间建立了同步管道, 我想比较一些关键表,但它们在百万行中很大,每行最多50列以上。 我尝试使用CSV转储,并进行了比较,但是还存在数据类型不兼容的问题(即日期表示)

如何进行大数据比较?

1 个答案:

答案 0 :(得分:0)

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

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

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