1 背景
在日常工作中,很多客户都遇到过这样的困扰:就像家里有两个不同的大仓库,一个仓库(MySQL)里存放着客户的订单信息,另一个仓库(Oracle)里存放着客户的会员等级信息。现在想要知道每个会员等级对应的订单总金额,这就需要从两个仓库里分别拿出数据,再把它们拼到一起分析,这就是我们常说的跨库取数。接下来,我通过几个常见场景,带你轻松搞懂跨库取数的实现方法。
2 跨库取数
2.1 同数据库,不同catalog
数据是在同一个数据库,不同的catalog中
1、V11已经支持多catalog,比如MySQL,连接数据库时只指定了某个catalog,在数据库表管理,可以加入其他catalog的数据:场景说明:数据在同一个数据库的不同目录中(如 MySQL 的不同 catalog)。
1、V11 支持多 catalog 管理:例如连接 MySQL 时先指定某个 catalog,在”数据库表管理“中可添加其他 catalog 的数据,如下图:
加入其他的catalog表中,显示的也是在同一个库中:2、添加其他的catalog表中,显示的也是在同一个库中:
2、在数据模型中,可以直接加入多catalog中的表:
2、数据模型支持选择多个catalog下的表:无需数据抽取,支持直连查询。
这种方式不需要抽取,可直连。
2.2
...
数据在不同的数据库中
比如:一个(MySQL)里存放着客户的订单信息,另一个仓库(Oracle)里存放着客户的会员等级信息
场景1:使用数据模型抽取,实现跨库关联
1、创建数据模型,加入不同数据库中的:1、创建数据模型,加入不同数据库中的,会提示需要抽取:
2、通过抽取,多个库的表或者查询都能正常关联关系:
...
注意:使用数据模型的其他查询,比如SQL查询、可视化SQL查询等都可以实现上面的效果。
...
场景2:使用数据模型的”ETL高级查询“跨库生成大宽表
1、在数据模型中创建”ETL高级查询“:
2、在"ETL高级查询"中通过拖拽数据源节点,选择不同的数据库,实现关联查询,如下图:
注意:如果需要俩个表之间固定关联关系,比如一定要inner join,可以通过ETL高级查询实现,并且在ETL高级查询,还可以实现各种数据处理,比如转换、过滤、元数据处理等,最终输出大宽表。join,可以通过ETL高级查询实现,并且在ETL高级查询,还可以实现各种数据处理,比如转换、过滤、元数据处理等,最终输出大宽表到缓存库中。
场景3:使用自助ETL关联成大宽表,再创建数据模型
1、创建自助ETL,具体可查看:自助ETL操作。
2、创建模型,并基于大宽表建模,如下图,还可以与其他维表进行关联: