本文介绍如何使用XIHE BSP SQL作业开发方式,将ODS层表数据通过DWD层过滤后,写入ADS层。
前提条件
集群的产品系列为湖仓版。
说明湖仓版集群至少有16 ACU的计算预留资源和24 ACU的存储预留资源。
已创建Job型资源组。详情请参见创建资源组。
步骤一:创建ODS层数据表
登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,在湖仓版页签下,单击目标集群ID。
在左侧导航栏,单击
。在SQLConsole窗口,选择XIHE引擎和Job型资源组。
输入以下语句,并单击执行SQL(F8)。创建一个名为
test_xihe_db
的库。CREATE DATABASE test_xihe_db;
输入以下语句,并单击执行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层表中为例。
输入以下语句,并单击执行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';
输入以下语句,并单击执行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;
输入以下语句,并单击执行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
。
输入以下语句,并单击执行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;
输入以下语句,并单击执行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层表数据为例。
在SQLConsole窗口,选择XIHE引擎和(Interactive)user_default资源组。
输入以下语句,并单击执行SQL(F8)。查询ADS层表数据。
SELECT * FROM test_xihe_db.adb_xihe_ads;
返回结果如下:
+------+-------+------+ | id | name | age | +------+-------+------+ | 4 | Ban | 25 | | 1 | Anna | 18 | +------+-------+------+