分享个简单易用数据同步构建数据仓库图表系统的工具吧

2018-08-20 21:23:16 +08:00
 sujin190

在项目中,我想很多人都会有各种数据导出,在构建数据仓库 ETL 报表分析系统的过程中,从不同数据源大量的数据同步,关联数据处理,不要太繁琐烦人。

https://github.com/snower/syncany

支持特性:

  1. 使用 json 文件轻松定义导出规则
  2. 支持从 execl、json 文件、csv 文件、mysql、mongodb、postgresql 读入数据
  3. 支持输出到 execl、json 文件、csv 文件、mysql、mongodb、postgresql、elasticsearch
  4. 支持从不同数据源读入关联数据,比如自动读取 mysql 订单 uid 关联 mongodb 用户信息
  5. 支持简单表达式对值进行处理
  6. 支持简单 case 语法翻译枚举类型
  7. 支持删除插入和插入更新删除两中同步类型

数据同步完成后,我想 kibana、superset、Grafana 都是很不错易于使用的图表系统了,直接写入 Execl 也可以大幅解放烦琐的数据导出需求。

简单导出规则示例:

{
  "extends": ["json/database.json", "json/log.json"],
  "name": "user_order",
  "input": "&.mysql_order.user_order::order_id",
  "output": "&.exports.用户订单.xlsx#订单列表::订单号",
  "querys": {
    "order_at|datetime": [">=", "<"]
  },
  "schema": {
    "订单号": "$.order_id",
    "用户 ID": "$.uid",
    "用户名": ["$.uid|ObjectId", "&.mongo_user.user::_id", "$.username"],
    "用户昵称": ["$.uid|ObjectId", "&.mongo_user.user::_id", "$.nickname"],
    "订单类型": {
      "name": "case_valuer",
      "key": "order_type",
      "case": {
        "groupbuy": "团购订单"
      },
      "default_case": "普通订单"
    },
    "订单金额(元)": ["@div", "$.total_fee", 100],
    "订单状态": ["$.status", "&.json.status.json::status", "$.verbose_name"],
    "下单时间": "$.order_at|datetime %Y-%m-%d %H:%M:%S"
  }
}

也可看详细 demo 示例: https://github.com/snower/syncany/tree/master/examples/demo

1845 次点击
所在节点    分享创造
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/481593

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX