本文为您介绍实时数仓Hologres如何实时查询海量MaxCompute数据,并以可视化方式分析和展现查询结果的最佳实践。
前提条件
开通MaxCompute,详情请参见开通MaxCompute和DataWorks。
说明请确保MaxCompute和Hologres的地域相同。
开通Hologres并连接至HoloWeb,详情请参见连接HoloWeb并执行查询。
开通Quick BI,详情请参见前提条件。
背景信息
Hologres是兼容PostgreSQL协议的实时交互式分析产品,在底层与MaxCompute无缝连接。
Hologres支持使用创建外部表的方式,实现MaxCompute加速查询,查看MaxCompute的数据。
本文以搭建访问某淘宝店铺的客户画像为例,展示客户所在城市、客户年龄、首选客户和出生于1980~1990年的首选客户所在城市人数的分布情况。
使用Hologres加速查询MaxCompute数据的完整链图如下所示。
访问店铺的客户数据存储在MaxCompute表中。
使用Hologres的创建外部表方式,实现MaxCompute加速查询。
Hologres对接数据大屏Quick BI,使用可视化方式展示客户画像。
操作步骤
准备MaxCompute数据源。
在MaxCompute中创建一张表并写入数据,详情请参见创建表。
本次试验采用已有的阿里云MaxCompute中public_data项目的如下MaxCompute表。
MaxCompute表名称
数据量
customer
1200万
customer_address
600万
customer_demographics
192万
Hologres创建外部表并查询表数据。
通过使用HoloWeb创建外部表,实现MaxCompute加速查询。操作步骤如下:
新建外部表。
登录HoloWeb,单击 ,使用可视化的方式创建外部表。
输入MaxCompute表的名称,例如
public_data.customer
就可以索引出表的字段,您可以根据实际业务,选择需要同步的表字段,单击提交。说明目前暂不支持跨地域查询MaxCompute表的数据。
创建外部查询MaxCompute数据是通过外部服务器来实现的,您可以直接调用Hologres底层已创建的名为odps_server的外部表服务器。其详细原理请参见Postgres FDW。
您也可以使用SQL语句批量创建外部表。
IMPORT FOREIGN SCHEMA public_data LIMIT to( customer, customer_address, customer_demographics, inventory,item, date_dim, warehouse) FROM server odps_server INTO PUBLIC options(if_table_exist 'update');
预览外部表数据。
成功新建外部表后,在左侧实例管理目录,鼠标右击新建的外部表,单击打开表,在表详情页单击数据预览,预览MaxCompute表的数据。
说明数据预览只展示部分数据。
查询外部表数据。
在表详情页单击查询表,在临时Query查询页面,输入如下示例SQL命令后单击运行,查询外部表的数据。
示例SQL语句如下。
# SQL1: 查询首选客户分布情况,按人数降序排列。 SELECT c_preferred_cust_flag, count(*) AS cnt FROM customer WHERE c_preferred_cust_flag IS NOT NULL GROUP BY c_preferred_cust_flag ORDER BY cnt DESC LIMIT 10; # SQL2: 查询客户年龄人数大于1000的分布情况,按人数降序排列。 SELECT c_birth_year, count(*) AS cnt FROM customer WHERE c_birth_year IS NOT NULL GROUP BY c_birth_year HAVING count(*) > 1000 ORDER BY cnt DESC LIMIT 10; # SQL3: 查询客户所在城市的人数大于10的分布情况,按人数降序排序。 SELECT ca_city, count(*) AS cnt FROM customer , customer_address WHERE c_current_addr_sk = ca_address_sk AND ca_city IS NOT NULL GROUP BY ca_city HAVING count(*) > 10 ORDER BY cnt DESC LIMIT 10; # SQL4: 查询首选客户出生于1980~1990年且所在城市的人数大于10的分布情况,按人数降序排列。 SELECT ca_city, count(*) AS cnt FROM customer , customer_address WHERE c_current_addr_sk = ca_address_sk AND c_birth_year >= 1980 AND c_birth_year < 1990 AND c_preferred_cust_flag = 'Y' AND ca_city IS NOT NULL GROUP BY ca_city HAVING count(*) > 10 ORDER BY cnt DESC LIMIT 10;
使用Quick BI分析数据。
Hologres查询出的MaxCompute数据直接对接Quick BI,使用可视化方式分析和展示数据。操作步骤如下:
添加数据源。
进入Quick BI控制台首页,选择PostgreSQL数据源,并填写配置信息,详情请参见Quick BI。
创建数据集。
成功连接Quick BI后,您可以将需要展示的数据创建为数据集并制作报表。
使用可视化方式展示客户画像。
根据业务需求展示报表。示例所配置的报表展示如下。