使用XIHE BSP SQL进行作业开发

更新时间:

本文介绍如何使用XIHE BSP SQL作业开发方式,将ODS层表数据通过DWD层过滤后,写入ADS层。

前提条件

  • 集群的产品系列为企业版、基础版或湖仓版

    说明
    • 企业版集群预留资源不能为0 ACU。

    • 湖仓版集群至少有16 ACU的计算预留资源和24 ACU的存储预留资源。

  • 已创建Job型资源组。详情请参见创建资源组

步骤一:创建ODS层数据表

  1. 登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,在企业版、基础版或湖仓版页签下,单击目标集群ID。

  2. 在左侧导航栏,单击作业开发 > SQL开发

  3. SQLConsole窗口,选择XIHE引擎和Job型资源组。

  4. 输入以下语句,并单击执行SQL(F8)。创建一个名为test_xihe_db的库。

    CREATE DATABASE test_xihe_db;
  5. 输入以下语句,并单击执行SQL(F8)。在test_xihe_db库中创建ODS层的无索引、有分区的表adb_xihe_ods,并插入数据。

    CREATE TABLE test_xihe_db.adb_xihe_ods
      (id int,
       name string,
       age int)
    DISTRIBUTED BY HASH (id)
    PARTITION BY VALUE (age)
    LIFECYCLE 4
    INDEX_ALL='N';
    INSERT INTO test_xihe_db.adb_xihe_ods(id,name,age) VALUES
    (001,'Anna',18),
    (002,'Bob',22),
    (003,'Cindy',12),
    (004,'Dan',25);

步骤二:创建DWD层数据表

本教程以从ODS层表中读取并过滤数据后写入DWD层表中为例。

  1. 输入以下语句,并单击执行SQL(F8)。在test_xihe_db库中创建一张无索引,有分区的表adb_xihe_dwd

    CREATE TABLE test_xihe_db.adb_xihe_dwd(
      id int,
      name string,
      age int)
    DISTRIBUTED BY HASH (id)
    PARTITION BY VALUE (age)
    LIFECYCLE 4
    INDEX_ALL = 'N';
  2. 输入以下语句,并单击执行SQL(F8)。从ODS层表adb_xihe_ods中读取id列不为002的数据并写入DWD层数据表adb_xihe_dwd

    INSERT INTO test_xihe_db.adb_xihe_dwd 
    SELECT 
      id,
      name,
      age 
    FROM test_xihe_db.adb_xihe_ods where id != 002;
  3. 输入以下语句,并单击执行SQL(F8)。查询adb_xihe_dwd表数据。

    SELECT * FROM test_xihe_db.adb_xihe_dwd;

    执行结果如下:

    +------+-------+------+
    | id   | name  | age  |
    +------+-------+------+
    |    4 | Ban   |   25 |
    |    1 | Anna  |   18 |
    |    3 | Cindy |   12 |
    +------+-------+------+

步骤三:创建ADS层数据表

ADS层表数据是对DWD层数据做了更精细地过滤,可直接用于业务分析,对查询速率有一定的要求,因此创建ADS层数据表时需添加索引。本教程从DWD层数据表adb_xihe_dwd中读取age列大于15的数据写入ADS层数据表adb_xihe_ads

  1. 输入以下语句,并单击执行SQL(F8)。在test_xihe_db库中创建一张AnalyticDB for MySQL的有索引,有分区的表adb_xihe_ads

    CREATE TABLE test_xihe_db.adb_xihe_ads
       (id int,
       name string,
       age int)
    DISTRIBUTED BY HASH (id)
    PARTITION BY VALUE (age)
    LIFECYCLE 4; 
  2. 输入以下语句,并单击执行SQL(F8)。从DWD层数据表adb_xihe_dwd中读取age列大于15的数据并写入ADS层数据表adb_xihe_ads

    INSERT INTO test_xihe_db.adb_xihe_ads 
    SELECT 
      id,
      name,
      age 
    FROM test_xihe_db.adb_xihe_dwd WHERE age > 15;

步骤四:查询ADS层表数据

AnalyticDB for MySQL企业版、基础版及湖仓版集群支持通过Spark SQL或XIHE BSP SQL离线方式查询数据,也支持通过XIHE MPP SQL在线实时查询数据。为保证数据的实时性,本教程以XIHE MPP SQL在线方式查询ADS层表数据为例。

  1. SQLConsole窗口,选择XIHE引擎和(Interactive)user_default资源组。

  2. 输入以下语句,并单击执行SQL(F8)。查询ADS层表数据。

    SELECT * FROM test_xihe_db.adb_xihe_ads;

    返回结果如下:

    +------+-------+------+
    | id   | name  | age  |
    +------+-------+------+
    |    4 | Ban   |   25 |
    |    1 | Anna  |   18 |
    +------+-------+------+