通过DataWorks的数据推送功能,能够将数据库的数据组织查询后推送到各渠道,除了能推送业务数据,也能将数据库自身提供的监控数据进行推送。本实践将以Hologres为例,在每日9:00定时推送Hologres的监控数据,方便掌握Hologres的状态。
步骤一:新建数据推送目标
数据推送任务可以将查询信息推送至目标渠道中,创建推送任务前,需要先创建好需要推送的目标,以供后续推送使用。
进入数据服务页面。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的数据服务,在下拉框中选择对应工作空间后单击进入数据服务。
在服务开发页面的左下角单击弹出设置页面,切换至推送目标管理页签,单击创建数据推送目标新建需要推送的对象。
创建数据推送目标时,配置如下:
步骤二:新建数据推送任务
进入数据服务。
登录DataWorks控制台,切换至数据源所在地域,单击左侧导航栏的数据服务,在下拉框中选择对应工作空间后单击进入数据服务。
新建数据推送任务。
在数据服务的左侧导航栏中,单击切换到数据推送页下,单击选择新建数据推送,设置数据推送任务名称后,单击确定,进入数据推送任务配置页面。
步骤三:配置实践
本文为您提供了七个实践场景,您可按需求选择不同的实践进行操作。
实践一:查看制造最多与最慢Query的使用者
双击在准备流程中创建好的推送任务,进入数据推送任务的编辑开发页面。
配置选择表模块。
编写查询SQL。
查询慢Query最多的User和统计前50慢的Query。
-- 查出慢 query 最多的 user
SELECT usename as topuser,
count(1) as topuser_counts
FROM hologres.hg_query_log
WHERE query_start >= '${date_start}'
AND query_start < '${date_end}'
group by usename
order by topuser_counts desc
LIMIT 1
;
-- 统计前 50 笔慢 query
SELECT usename
,datname
,duration
,application_name
FROM hologres.hg_query_log
WHERE query_start >= '${date_start}'
AND query_start < '${date_end}'
order by duration desc
LIMIT 50
;
配置赋值参数。
SQL自定义完成后,SQL返回结果字段将自动填入。若输出参数失败或有误,您可以关闭自动解析参数,手动新增参数。
您还可以通过${变量名}
的方式在SQL中配置自定义变量,该变量为赋值参数(赋值参数可赋值时间表达式及常量),从而实现代码动态入参,可参见配置推送内容。
在示例中需要配置的赋值参数为${date_start}
和${date_end}
两个时间参数。
配置推送内容。
推送内容支持表格和Markdown内容的配置,可将输出参数和赋值参数以${参数名称}
占位符的形式添加到Markdown富文本中,也可以直接选择输出参数至表格中。详情可参见配置推送内容。
数据推送设置。
测试数据推送任务。
创建好数据推送任务后,您可以单击工具栏上的保存按钮,保存当前配置,然后单击测试进行开发状态测试,用来测试数据推送是否可以正常推送。
完成数据推送测试后,即可对数据推送任务进行后续发布等操作。
实践二:查询近12小时消耗比较高的Query
双击在准备流程中创建好的推送任务,进入数据推送任务的编辑开发页面。
配置选择表模块。
编写查询SQL。
近12小时消耗较高的Query的查询SQL。
SELECT status AS "状态",
duration AS "耗时(ms)",
query_start AS "开始时间",
(read_bytes/1048576)::text || ' MB' AS "读取量",
(memory_bytes/1048576)::text || ' MB' AS "内存",
(shuffle_bytes/1048576)::text || ' MB' AS "Shuffle",
(cpu_time_ms/1000)::text || ' s' AS "CPU时间",
physical_reads as "读盘",
query_id as "QueryID",
query::char(30)
FROM hologres.hg_query_log
WHERE query_start >= now() - interval '12 hour'
and duration > 1000
ORDER BY duration DESC,
read_bytes DESC,
shuffle_bytes DESC,
memory_bytes DESC,
cpu_time_ms DESC,
physical_reads DESC
LIMIT 100;
配置参数。
SQL自定义完成后,SQL返回结果字段将自动填入。若输出参数失败或有误,您可以关闭自动解析参数,手动新增参数。
配置推送内容。
推送内容支持表格和Markdown内容的配置,可将输出参数和赋值参数以${参数名称}
占位符的形式添加到Markdown富文本中,也可以直接选择输出参数至表格中。详情可参见配置推送内容。
数据推送设置。
测试数据推送任务。
创建好数据推送任务后,您可以单击工具栏上的保存按钮,保存当前配置,然后单击测试进行开发状态测试,用来测试数据推送是否可以正常推送。
完成数据推送测试后,即可对数据推送任务进行后续发布等操作。
实践三:查看最近3小时内每小时的Query访问量和数据读取总量
双击在准备流程中创建好的推送任务,进入数据推送任务的编辑开发页面。
配置选择表模块。
编写查询SQL。
最近 3 小时内每小时的Query访问量和数据读取总量的查询SQL。
SELECT
date_trunc('hour', query_start) AS query_start,
count(1) AS query_count,
sum(read_bytes/1048576)::text || ' MB' AS read_MB,
sum(cpu_time_ms/1000)::text || ' s' AS cpu_time_s
FROM
hologres.hg_query_log
WHERE
query_start >= now() - interval '3 h'
GROUP BY 1;
配置参数。
SQL自定义完成后,SQL返回结果字段将自动填入。若输出参数失败或有误,您可以关闭自动解析参数,手动新增参数。
配置推送内容。
推送内容支持表格和Markdown内容的配置,可将输出参数和赋值参数以${参数名称}
占位符的形式添加到Markdown富文本中,也可以直接选择输出参数至表格中。详情可参见配置推送内容。
数据推送设置。
测试数据推送任务。
创建好数据推送任务后,您可以单击工具栏上的保存按钮,保存当前配置,然后单击测试进行开发状态测试,用来测试数据推送是否可以正常推送。
完成数据推送测试后,即可对数据推送任务进行后续发布等操作。
实践四:查看昨日新增的Query数量
双击在准备流程中创建好的推送任务,进入数据推送任务的编辑开发页面。
配置选择表模块。
编写查询SQL。
昨日新增的Query数量的查询SQL。
SELECT
COUNT(1) as "increse_queries"
FROM ( SELECT DISTINCT
t1.digest
FROM
hologres.hg_query_log t1
WHERE
t1.query_start >= CURRENT_DATE - INTERVAL '1 day'
AND t1.query_start < CURRENT_DATE
AND NOT EXISTS (
SELECT
1
FROM
hologres.hg_query_log t2
WHERE
t2.digest = t1.digest
AND t2.query_start < CURRENT_DATE - INTERVAL '1 day')
AND digest IS NOT NULL
) AS a;
配置参数。
SQL自定义完成后,SQL返回结果字段将自动填入。若输出参数失败或有误,您可以关闭自动解析参数,手动新增参数。
配置推送内容。
推送内容支持表格和Markdown内容的配置,可将输出参数和赋值参数以${参数名称}
占位符的形式添加到Markdown富文本中,也可以直接选择输出参数至表格中。详情可参见配置推送内容。
数据推送设置。
测试数据推送任务。
创建好数据推送任务后,您可以单击工具栏上的保存按钮,保存当前配置,然后单击测试进行开发状态测试,用来测试数据推送是否可以正常推送。
完成数据推送测试后,即可对数据推送任务进行后续发布等操作。
实践五:查看与昨天同一时间对比过去3小时的数据访问量情况
双击在准备流程中创建好的推送任务,进入数据推送任务的编辑开发页面。
配置选择表模块。
编写查询SQL。
过去3小时的数据访问量情况与昨天同一时间对比查询SQL。
SELECT
query_date,
count(1) AS query_count,
sum(read_bytes) AS read_bytes,
sum(cpu_time_ms) AS cpu_time_ms
FROM
hologres.hg_query_log
WHERE
query_start >= now() - interval '180min'
GROUP BY
query_date
UNION ALL
SELECT
query_date,
count(1) AS query_count,
sum(read_bytes) AS read_bytes,
sum(cpu_time_ms) AS cpu_time_ms
FROM
hologres.hg_query_log
WHERE
query_start >= now() - interval '1d 180min'
AND query_start <= now() - interval '1d'
GROUP BY
query_date;
配置参数。
SQL自定义完成后,SQL返回结果字段将自动填入。若输出参数失败或有误,您可以关闭自动解析参数,手动新增参数。
配置推送内容。
推送内容支持表格和Markdown内容的配置,可将输出参数和赋值参数以${参数名称}
占位符的形式添加到Markdown富文本中,也可以直接选择输出参数至表格中。详情可参见配置推送内容。
数据推送设置。
测试数据推送任务。
创建好数据推送任务后,您可以单击工具栏上的保存按钮,保存当前配置,然后单击测试进行开发状态测试,用来测试数据推送是否可以正常推送。
完成数据推送测试后,即可对数据推送任务进行后续发布等操作。
实践六:查询最近30分钟Query各阶段耗时比较高的Query
双击在准备流程中创建好的推送任务,进入数据推送任务的编辑开发页面。
配置选择表模块。
编写查询SQL。
最近30分钟中各阶段耗时比较高的Query。
SELECT
status AS "状态",
duration AS "耗时(ms)",
optimization_cost AS "优化耗时(ms)",
start_query_cost AS "启动耗时(ms)",
get_next_cost AS "执行耗时(ms)",
duration - optimization_cost - start_query_cost - get_next_cost AS "其他耗时(ms)",
query_id AS "QueryID"
FROM
hologres.hg_query_log
WHERE
query_start >= now() - interval '30 min'
ORDER BY
duration DESC,
start_query_cost DESC,
optimization_cost,
get_next_cost DESC,
duration - optimization_cost - start_query_cost - get_next_cost DESC
LIMIT 100;
配置参数。
SQL自定义完成后,SQL返回结果字段将自动填入。若输出参数失败或有误,您可以关闭自动解析参数,手动新增参数。
配置推送内容。
推送内容支持表格和Markdown内容的配置,可将输出参数和赋值参数以${参数名称}
占位符的形式添加到Markdown富文本中,也可以直接选择输出参数至表格中。详情可参见配置推送内容。
数据推送设置。
测试数据推送任务。
创建好数据推送任务后,您可以单击工具栏上的保存按钮,保存当前配置,然后单击测试进行开发状态测试,用来测试数据推送是否可以正常推送。
完成数据推送测试后,即可对数据推送任务进行后续发布等操作。
实践七:查询最先失败的Query
双击在准备流程中创建好的推送任务,进入数据推送任务的编辑开发页面。
配置选择表模块。
编写查询SQL。
最先失败的Query查询SQL。
SELECT
status AS "状态",
regexp_replace(message, '\n', ' ')::char(150) AS "报错信息",
duration AS "耗时(ms)",
query_start AS "开始时间",
query_id AS "QueryID",
query::char(100) AS "Query"
FROM
hologres.hg_query_log
WHERE
query_start BETWEEN '2024-07-10 17:00:00'::timestamptz AND '2024-07-10 17:42:00'::timestamptz + interval '2 min'
AND status = 'FAILED'
ORDER BY
query_start ASC
LIMIT 100;
配置参数。
SQL自定义完成后,SQL返回结果字段将自动填入。若输出参数失败或有误,您可以关闭自动解析参数,手动新增参数。
配置推送内容。
推送内容支持表格和Markdown内容的配置,可将输出参数和赋值参数以${参数名称}
占位符的形式添加到Markdown富文本中,也可以直接选择输出参数至表格中。详情可参见配置推送内容。
数据推送设置。
测试数据推送任务。
创建好数据推送任务后,您可以单击工具栏上的保存按钮,保存当前配置,然后单击测试进行开发状态测试,用来测试数据推送是否可以正常推送。
完成数据推送测试后,即可对数据推送任务进行后续发布等操作。
后续步骤
创建完成数据推送任务后,可以对推送任务进行管理,详情请参见发布推送任务。