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

前提条件

背景信息

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连接Hologers实例。
      登录HoloWeb,单击连接管理 > 数据连接,配置新建连接的参数,单击确认新建连接
      参数名称 说明 备注
      连接名称 自定义的连接名称。
      连接描述 连接的描述信息。
      主机 Hologres实例的公共网络域名。 进入Hologres管理控制台的实例详情页,从实例配置获取主机。
      端口 Hologres实例的公共网络端口。 进入Hologres管理控制台的实例详情页,从实例配置获取端口。
      初始化数据库 Hologres实例中创建的数据库名称。 进入Hologres管理控制台的实例详情页,从DB管理获取初始化数据库。
      用户名 当前账号的AccessKey ID。 您可以单击AccessKey 管理,获取用户名。
      密码 当前账号的AccessKey Secret。 您可以单击AccessKey 管理,获取密码。
      测试连通性 检测数据连接是否成功:
      • 成功:显示测试通过
      • 不成功:显示测试不通过
    2. 新建外部表。
      单击连接管理 > 外部表,使用可视化的方式创建外部表。
      输入MaxCompute表的名称,就可以索引出表的字段,您可以根据实际业务,选择需要同步的表字段,单击提交
      说明
      • 目前暂不支持跨地域查询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');
    3. 预览外部表数据。
      成功新建外部表后,选择连接管理 > 我的连接
      鼠标右击新建的外部表,单击数据预览,查询MaxCompute表的数据。
      数据预览只展示部分数据。预览
    4. 查询外部表数据。
      选择外部表所在的连接名数据库。使用SQL命令在Query查询模块中查询所有数据。l
      示例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