本文为您介绍如何使用交互式分析Hologres对接实时计算,快速搭建实时数仓分析大屏的最佳实践。

前提条件

  • 开通Hologres并连接开发工具,详情请参见HoloWeb快速入门
  • 开通实时计算。
    说明 请确保实时计算和Hologres的地域相同。
  • 开通DataV,详情请参见开通DataV服务

背景信息

Hologres是阿里云的实时交互式分析产品,通过内置的实时数据API直接对接实时计算,实现高并发实时写入或查询实时数据,速度达到秒级。

Hologres兼容PostgreSQL,将查询到的数据直接对接BI分析工具,使用可视化方式快速分析和展现数据。

本文以搭建某电商店铺实时运营指标大屏为例,展示店铺的总流量、每个商店的访问量、区域销售量和热销商品数据。

使用Hologres搭建实时运营指标大屏的完整链路图如下所示。a
  • 采集源数据并实时写入实时计算,通过实时计算清洗并聚合数据。
  • 实时写入处理后的数据至Hologres,使用Hologres进行交互式查询。
  • Hologres对接数据大屏DataV,展示实时运营指标大屏。

操作步骤

  1. 获取源数据。
    通过流式数据服务DataHub或者其他业务日志获取源数据。
    为了方便流程操作,本试验从实时计算直接产生数据,详情请参见第3步。
  2. Hologres创建数据接收表。
    使用Holoweb创建字段数据类型与源表相同的表,用于接收实时写入的数据。SQL语句示例如下。
    BEGIN;
    CREATE TABLE public.order_details (
     "user_id" int8,
     "user_name" text,
     "item_id" int8,
     "item_name" text,
     "price" numeric(38,2),
     "province" text,
     "city" text,
     "ip" text,
     "longitude" text,
     "latitude" text,
     "sale_timestamp" timestamptz NOT NULL
    );
    CALL SET_TABLE_PROPERTY('public.order_details','orientation', 'column');
    CALL SET_TABLE_PROPERTY('public.order_details','clustering_key', 'sale_timestamp:asc');
    CALL SET_TABLE_PROPERTY('public.order_details','segment_key', 'sale_timestamp');
    CALL SET_TABLE_PROPERTY('public.order_details','bitmap_columns', 'user_name,item_name,province,city,ip,longitude,latitude');
    CALL SET_TABLE_PROPERTY('public.order_details','dictionary_encoding_columns','user_name:auto,item_name:auto,province:auto,city:auto,ip:auto,longitude:auto,latitude:auto');
    CALL SET_TABLE_PROPERTY('public.order_details','time_to_live_in_seconds', '3153600000');
    CALL SET_TABLE_PROPERTY('public.order_details','distribution_key', 'user_id');
    CALL SET_TABLE_PROPERTY('public.order_details','storage_format', 'orc');
    COMMIT;
  3. 实时计算清洗数据。
    进入实时计算开发平台,使用实时计算清洗并聚合源数据,通过实时数据API将数据实时写入Hologres。SQL语句示例如下。
    CREATE TEMPORARY table source_table (
       user_id BIGINT,
       user_name VARCHAR,
       item_id BIGINT,
          item_name VARCHAR,
        price numeric (38, 2),
       province VARCHAR,
       city VARCHAR,
          longitude VARCHAR,
       latitude VARCHAR,
        ip VARCHAR,
       sale_timestamp TIMESTAMP
      )
    
    with ('connector' = 'ordergen');
    
    CREATE TEMPORARY table hologres_sink (
       user_id BIGINT,
       user_name VARCHAR,
       item_id BIGINT,
          item_name VARCHAR,
        price numeric (38, 2),
       province VARCHAR,
       city VARCHAR,
          longitude VARCHAR,
       latitude VARCHAR,
        ip VARCHAR,
       sale_timestamp TIMESTAMP
      )
    with (
       'connector' = 'hologres',
       'dbname' = 'Hologres的数据库名',
       'tablename' = 'Hologres接收数据的表名',
       'username' = '当前云账号的AccessKey ID',
       'password' = '当前云账号的AccessKey Secret',
       'endpoint' = 'Hologres的VPC网络地址:端口'
      );
    
    insert into hologres_sink
    select user_id,
      user_name,
      item_id,
      item_name,
      price,
      province,
      city,
      longitude,
      latitude,
      ip,
      sale_timestamp
    from
     source_table;
  4. 发布实时作业。
    提交并发布填写完成的作业至生产环境。操作步骤如下:
    1. 引用资源包。
      选择实时计算开发平台左侧菜单栏的Connectors,单击上方新建资源,配置上传资源的参数,上传JAR资源包。
    2. 发布作业。
      成功引用资源包后,保存作业。单击上线,根据业务配置资源参数,提交作业至生产环境。
    3. 启动作业。
      作业发布后,前往运维界面,手动启动作业。
  5. 实时查询数据。
    根据业务情况,在Hologres中从不同维度实时查询实时写入的数据,示例如下。
    select sum(price) as "GMV" from order_details ;
    select count(distinct user_id) as "UV" from order_details ;
    select city as "城市", count(distinct user_id) as "购买用户数" from order_details group by "城市" order by "购买用户数" desc limit 100;
    select item_name as "商品", sum(price) as "销售额" from order_details group by "商品" order by "销售额" desc limit 100;
    select to_char(sale_timestamp, 'MM-DD') as "日期", sum(price) as "GMV" fromorder_details group by "日期" order by "GMV" desc limit 100;
    
                        
  6. 展示DataV实时大屏。
    Hologres中查询出的数据直接对接DataV,用于制作实时大屏。操作步骤如下:
    1. 添加数据源。
      进入DataV控制台首页,单击我的数据 > 添加数据,配置添加数据的参数。
      类型选择交互式分析Hologres。
    2. 创建实时大屏。
      根据大屏需要显示的内容,选择相应组件并配置数据源信息。详情请参见组件概览
      本试验中选择了基本柱状、轮播、基础平面地图和数字翻牌器。以配置数字翻牌器示例。
      1. 配置数据源信息。
      2. 配置数字翻牌器的边框、字体和颜色。
    3. 展示实时大屏。
      配置大屏的插件参数及数据源信息后,可根据实际业务添加装饰元素,美化插件。
      • 左侧实时显示商品的访问量以及城市的销售额。
      • 中间地图实时显示每一笔交易订单的位置、总的销售额以及总访问次数。
      • 右侧实时显示商品的销售额占比和商品的销售排行。