数据治理中心 DATAARTS STUDIO-实时报警平台搭建:使用DLI SQL脚本开发构建告警报表脚本

时间:2024-12-04 14:09:34

使用 DLI SQL脚本开发构建告警报表脚本

我们需要通过SQL脚本在DLI中新建OBS表来存放数据表,然后再构建一个SQL脚本来统计告警信息。

  1. DataArts Studio 管理中心模块创建一个到DLI的连接,数据连接名称为“dli”
  2. 进入数据开发模块,在DLI中创建一个数据库,用于存放数据表,数据库名称为“dlitest”
  3. 创建一个DLI SQL脚本,通过SQL语句来创建数据表alarm_info,alarm_count_info。

    其中,alarm_info、alarm_count_info都为OBS表,数据存储在OBS中,分别用于存放原始告警表、告警统计报表。

    图9 创建数据表

    关键操作说明:

    • 图9中的脚本开发区为临时调试区,关闭脚本页签后,开发区的内容将丢失。如需保留该SQL脚本,请单击,将脚本保存至指定的目录中。

    关键参数说明:

    • 数据连接:1中创建的DLI数据连接。
    • 数据库:2中创建的数据库。
    • 资源队列:使用DLI提供的默认资源队列“default”
    • SQL语句:如下所示。
      create table  alarm_info(alarm_time string, alarm_id string, alarm_type int ) using csv options(path 'obs://dlfexample/alarm_info') partitioned by(alarm_time);
      create table  alarm_count_info(alarm_time string, alarm_type int, alarm_count int) using csv options(path 'obs://dlfexample/alarm_count_info');

  4. 单击运行脚本,创建alarm_info、alarm_count_info数据表。
  5. 清空编辑器中4的SQL语句,重新输入SQL语句。

    ALTER TABLE alarm_info  ADD PARTITION (alarm_time = ${dayParam}) 
    LOCATION 'obs://dlfexample/alarm_info/${obsPathYear}';
    insert into alarm_count_info 
    select alarm_time,alarm_type,count(alarm_type) from alarm_info where alarm_time = ${dayParam} group by alarm_time,alarm_type;

    SQL语句实现的功能:

    1. 在OBS的“obs://dlfexample/alarm_info”目录下,根据日期新建DLI分区。假设当前日期为2018/10/10,那么在“obs://dlfexample/alarm_info”目录下新建“2018/10/09”的DLI分区,用于存放前一天的数据表。
    2. 按照告警分区时间和告警类别进行统计,将统计结果插入alarm_count_info数据表。

    关键参数说明:

    • ${dayParam}:dayParam是指alarm_info表分区值,在脚本编辑器下方输入具体的参数值“$getCurrentTime(@@yyyyMMdd@@,-24*60*60)”
    • ${obsPathYear}:obsPathYear是指OBS分区目录路径,在脚本编辑器下方输入具体的参数值“$getCurrentTime(@@yyyy/MM/dd@@,-24*60*60)”

  6. 脚本调试无误后,我们需要保存该脚本,脚本名称为“dli_partition_count”。在后续的作业中设置为定期执行该脚本(使用DLF作业开发和作业调度每天定时输出告警统计报表),实现定期输出告警统计报表。
support.huaweicloud.com/bestpractice-dataartsstudio/dataartsstudio_05_0216.html