实时分析海量MaxCompute数据

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

前提条件

背景信息

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

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

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

使用Hologres加速查询MaxCompute数据的完整链图如下所示。

image

  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代码创建数据集的方式来创建数据集,如下图所示。

      image

    3. 使用可视化方式展示客户画像。

      根据业务需求展示报表。示例所配置的报表展示如下。a