本文为您介绍交互式分析Hologres如何实时查询海量MaxCompute数据,并以可视化方式分析和展现查询结果的最佳实践。
背景信息
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加速查询。操作步骤如下:
- 新建外部表。
输入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后,您可以将需要展示的数据创建为数据集并制作报表。
本次试验使用
即席查询SQL的方式来创建数据集,如下图所示。

- 使用可视化方式展示客户画像。
根据业务需求展示报表。示例所配置的报表展示如下。
