本文为您介绍交互式分析Hologres如何实时查询海量MaxCompute数据,并以可视化方式分析和展现查询结果的最佳实践。

前提条件

  • 开通MaxCompute,详情请参见开通MaxCompute
    说明 请确保MaxCompute和Hologres的地域相同。
  • 开通Hologres并连接至HoloWeb,详情请参见连接HoloWeb
  • 开通Quick BI,详情请参见连接数据源

背景信息

Hologres是兼容PostgreSQL协议的实时交互式分析产品,在底层与MaxCompute无缝连接。

Hologres支持使用创建外部表的方式,实现MaxCompute加速查询,查看MaxComppute的数据。

本文以搭建访问某淘宝店铺的客户画像为例,展示客户所在城市、客户年龄、首选客户和出生于1980~1990年的首选客户所在城市人数的分布情况。

使用Hologres加速查询MaxCompute数据的完整链图如下所示。q
  1. 访问店铺的客户数据存储在MaxCompute表中。
  2. 使用Hologres的创建外部表方式,实现MaxCompute加速查询。
  3. Hologres对接数据大屏Quick BI,使用可视化方式展示客户画像。

操作步骤

  1. 准备MaxCompute数据源。
    在MaxCompute中创建一张表并写入数据,详情请参见创建表
    本次试验采用已有的阿里云MaxCompute中public_data项目的如下MaxCompute表。获取表的方法请参见公开数据集
    MaxCompute表名称 数据量
    customer 1200万
    customer_address 600万
    customer_demographics 192万
  2. Hologres创建外部表并查询表数据。
    通过使用HoloWeb创建外部表,实现MaxCompute加速查询。操作步骤如下:
    1. 新建外部表。
      登录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');
    2. 预览外部表数据。
      成功新建外部表后,在左侧实例管理目录,鼠标右击新建的外部表,单击打开表,在表详情页单击数据预览,预览MaxCompute表的数据。
      说明 数据预览只展示部分数据。
    3. 查询外部表数据。
      在表详情页单击查询表,在临时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;
  3. 使用Quick BI分析数据。
    Hologres查询出的MaxCompute数据直接对接Quick BI,使用可视化方式分析和展示数据。操作步骤如下:
    1. 添加数据源。
      进入Quick BI控制台首页,选择PostgreSQL数据源,并填写配置信息,详情请参见Quick BI
    2. 创建数据集。
      成功连接Quick BI后,您可以将需要展示的数据创建为数据集并制作报表。
      本次试验使用即席查询SQL的方式来创建数据集,如下图所示。b
    3. 使用可视化方式展示客户画像。
      根据业务需求展示报表。示例所配置的报表展示如下。a