Quick BI为您提供海量数据的实时在线分析服务以及丰富的可视化效果,您可以通过拖拽式操作或SQL语句方式,轻松地完成数据分析、业务数据探查及报表制作。本文为您介绍如何使用交互式分析Hologres连接Quick BI,并进行可视化分析。

前提条件

背景信息

Hologres与Quick BI高效连通,支持通过Hologres数据源直接连接Quick BI,将Hologres高效查询的数据直接进行可视化分析。

说明 当前Quick BI高级版和专业版支持Hologres数据源,其余版本请使用PostgreSQL数据源,更多关于PostgreSQL数据源的操作请参见云数据源PostgreSQL

本文以高级版Qucik BI为例,为您演示连接Hologres并进行可视化分析的相关操作。

使用限制

  • Quick BI当前仅支持使用公共网络和经典网络连接Hologres,不支持使用VPC网络连接Hologres。
  • 您无需在Hologres中配置白名单即可连接至Quick BI。
  • Hologres连接Quick BI时,您需要根据Quick BI的版本选择相应的数据源,推荐使用Hologres数据源。

使用Quick BI进行可视化分析

  1. 登录Quick BI管理控制台
  2. 添加数据源。
    1. 在Quick BI管理控制台页面,单击顶部菜单栏的工作空间
    2. 工作空间页面左侧导航栏,单击数据源
    3. 数据源页面,单击右上角的+新建数据源
    4. 选择目标数据源并配置相应参数。
      1. 选择云数据库 > Hologres选择Hologres数据源
      2. 配置添加Hologres数据源的各项参数。添加Hologres数据源参数说明如下表所示。
        参数 描述
        显示名称

        自定义的显示名称。

        数据库地址

        连接的Hologres实例的服务器地址。

        您可以登录管理控制台,进入实例详情页,从实例配置页面获取。

        说明 Quick BI当前仅支持使用公共网络和经典网络连接Hologres,不支持使用VPC网络连接Hologres。
        端口

        连接的Hologres实例的端口。

        您可以登录管理控制台,进入实例详情页,从实例配置页面获取。

        说明 Quick BI当前仅支持使用公共网络和经典网络连接Hologres,不支持使用VPC网络连接Hologres。
        数据库

        连接的Hologres实例的数据库名称。

        您可以登录管理控制台,进入实例详情页,从DB管理页面获取。

        Schema

        默认为public Schema。您也可以使用新创建的Schema,在数据源配置了Schema后,列表中会展示当前Schema下所有的表。但是在使用即席SQL时,还需要在表名称前手动添加对应的Schema名(即shcema.table),才能正确索引到Schema下面的表。

        用户名

        具有当前数据库登录权限账号的AccessKey ID。

        您可以单击AccessKey 管理,获取AccessKey ID。

        密码

        具有当前数据库登录权限账号的AccessKey Secret。

        您可以单击AccessKey 管理,获取AccessKey Secret。

      参数配置完成后,您可以单击连接测试,测试Quick BI与Hologres的连接状态:
      • 如果显示数据源连通性正常,则表示Quick BI与Hologres连接成功。
      • 如果显示数据源连通性异常,请检查参数是否正确,则表示Quick BI与Hologres连接失败。请根据报错信息处理异常。
    5. 单击确定,完成配置。
  3. 可视化分析数据。
    成功连接数据源后,在数据源 > 我的数据源页面,单击已创建的数据源,显示当前数据库中的所有表。
    • 如果您希望使用界面化操作完成数据的可视化分析,则可以使用拖拽方式。
    • 如果您希望使用SQL语句完成数据的可视化分析,则可以使用即席分析SQL方式。

    两种方式的具体操作如下:

    • 拖拽方式。
      1. 单击目标表操作列的创建数据集图标,创建数据集。
      2. 配置创建数据集对话框的名称位置参数。创建数据集
      3. 单击确定
      4. 我的数据集页面,您可以单击目标数据集操作列下的图标,进行相应操作:数据集操作列描述
        • 单击编辑图标,查看当前数据集的数据。
        • 单击新建仪表盘图标,新建仪表盘,将表数据导入并生成图表,进行可视化展示。
        • 单击新建电子表格图标,新建电子表格,将目标表数据导入并生成电子表格,进行可视化展示。
        • 单击更多图标,执行更多操作。例如,数据脱敏、缓存配置及清除缓存等。
        具体功能的操作,详情请参见概述
        示例新建仪表板,在仪表板编辑页面创建堆积柱状图,并设计图表样式展示数据。展示新建仪表盘
    • 即席分析SQL方式。
      1. 数据源页面,单击右上角的即席分析SQL,进入即席分析SQL页面。
      2. 您可以根据业务需求输入查询SQL语句,并单击执行示例即席查询SQL语句
      3. 获取需要查询的数据后,单击创建数据集
      4. 配置保存自定义SQL对话框的名称位置SQL参数。配置保存自定义SQL
      5. 单击确定

      成功创建数据集后,您可以在数据集中可视化分析表数据,详情请参见自定义SQL

时间筛选控件最佳实践

在Hologres创建表时,您可以设置Segment_key(别名event_time_column)属性,对时间类型过滤条件进行索引优化,防止全表扫描并加速查询。Hologres默认把表中第一个时间戳类型作为Segment_key

Quick BI支持高级的SQL占位符功能,您可以使用SQL占位符来设置时间控件。更多SQL占位符信息,请参见自定义SQL

  1. 设置时间筛选字段占位符。
    执行以下步骤前,需要在Hologres创建名称为LINEITEM的内部表,并且将MaxCompute公共空间MAXCOMPUTE_PUBLIC_DATA中public.odps_lineitem_10g表的数据导入到LINEITEM表中,详细步骤请参见Hologres查询体验快速入门
    1. 在Quick BI管理控制台的数据源页面,单击右上角的SQL创建数据集,进入新建代码片段对话框。
    2. 输入以下SQL语句,从LINEITEM表中取出时间戳数据。
      SELECT
          *
      FROM
        "public"."lineitem" AS AME_T_1_
      WHERE
        AME_T_1_."l_shipdate" >= TO_TIMESTAMP('${report_date.get(0)}', 'yyyy-MM-dd hh24:mi:ss')
        AND AME_T_1_."l_shipdate" <= TO_TIMESTAMP('${report_date.get(1)}', 'yyyy-MM-dd hh24:mi:ss')
    3. 单击参数设置,设置SQL占位符。
    4. 变量类型下拉列表选择“日期-年月日时分秒 > YYYY-MM-DD HH-MI-SS”。
    5. 单击确定后,单击确认编辑
    6. 仪表板编辑页面,单击新建筛选项,在查询条件设置对话框,字段选择所设置的SQL占位符。
      选择SQL占位符
    7. 仪表板编辑页面,单击查看SQL,获取到如下SQL。
      SELECT
        AME_T_1_."l_shipmode" AS T_A0_2_,
        AME_T_1_."l_shipinstruct" AS T_A1_3_,
        SUM(AME_T_1_."l_extendedprice") AS T_A2_4_
      FROM
        "public"."lineitem" AS AME_T_1_
      WHERE
        AME_T_1_."l_shipdate" >= TO_TIMESTAMP('1993-01-01 00:00:00', 'yyyy-MM-dd hh24:mi:ss')
        AND AME_T_1_."l_shipdate" <= TO_TIMESTAMP('1998-12-31 23:59:59', 'yyyy-MM-dd hh24:mi:ss')
      GROUP BY
        AME_T_1_."l_shipmode",
        AME_T_1_."l_shipinstruct"
      LIMIT
        1000 OFFSET 0
  2. 验证Segment_key是否生效。

    您可查看SQL的执行计划中是否有Segment Filter的关键字出现以验证Segment_key是否生效。

    1. 登录Hologres管理控制台,单击左侧实例列表
    2. 实例详情页左侧导航栏,单击Database管理
    3. DB授权页面,单击SQL编辑器
    4. SQL编辑器页面,单击左上角的新建SQL窗口
    5. 在新增的临时Query查询页面,选择已创建的实例名数据库后,请您在SQL查询的编辑框输入如下语句,单击运行

      以下SQL语句用来查看获取到SQL的执行计划,用于验证Segment_key是否生效。

      SQL执行计划
      explain SELECT
        AME_T_1_."l_shipmode" AS T_A0_2_,
        AME_T_1_."l_shipinstruct" AS T_A1_3_,
        SUM(AME_T_1_."l_extendedprice") AS T_A2_4_
      FROM
        "public"."lineitem" AS AME_T_1_
      WHERE
        AME_T_1_."l_shipdate" >= TO_TIMESTAMP('1993-01-01 00:00:00', 'yyyy-MM-dd hh24:mi:ss')
        AND AME_T_1_."l_shipdate" <= TO_TIMESTAMP('1998-12-31 23:59:59', 'yyyy-MM-dd hh24:mi:ss')
      GROUP BY
        AME_T_1_."l_shipmode",
        AME_T_1_."l_shipinstruct"
      LIMIT
        1000 OFFSET 0
    6. 结果页签中获取执行计划,如下。
      ->  Limit  (cost=0.00..1.01 rows=1 width=24)
            ->  Partial HashAggregate  (cost=0.00..1.01 rows=1 width=24)
                  Group Key: l_shipmode, l_shipinstruct
                  ->  Redistribute Motion  (cost=0.00..1.01 rows=10 width=24)
                        ->  Result  (cost=0.00..1.01 rows=10 width=24)
                              ->  Partial HashAggregate  (cost=0.00..1.01 rows=10 width=24)
                                    Group Key: l_shipmode, l_shipinstruct
                                    ->  Parallelism (Gather Exchange)  (cost=0.00..1.01 rows=32 width=24)
                                          ->  Result  (cost=0.00..1.01 rows=32 width=24)
                                                ->  DecodeNode  (cost=0.00..1.01 rows=32 width=24)
                                                      ->  Partial HashAggregate  (cost=0.00..1.01 rows=32 width=24)
                                                            Group Key: l_shipmode, l_shipinstruct
                                                            ->  Index Scan using holo_index:[1] on lineitem  (cost=0.00..1.00 rows=1000 width=24)
                                                                  Segment Filter: ((l_shipdate >= '1993-01-01 00:00:00+08'::timestamp with time zone)

      执行计划中,出现了Segment Filter,说明Segment_key已生效,您可以使用SQL占位符创建的时间控件。