通過DataWorks的數據推送功能,能夠將數據庫的數據組織查詢后推送到各渠道,除了能推送業務數據,也能將數據庫自身提供的監控數據進行推送。本實踐將以Hologres為例,在每日9:00定時推送Hologres的監控數據,方便掌握Hologres的狀態。
實踐準備
創建DataWorks空間,本實踐以標準模式空間為例。創建空間的詳細信息請參見創建工作空間。
創建Hologres數據源,新建Hologres數據源請參見創建Hologres數據源。
準備DataWorks資源組,并綁定至已創建空間,詳情可參見使用Serverless資源組。
使用限制
數據推送功能推送至不同對象時的數據大小限制:
推送目標為釘釘,推送數據大小不超過20KB。
推送目標為飛書,推送數據大小不超過30KB,圖片小于10MB。
推送目標為企業微信,每個機器人發送的消息不能超過20條/分鐘。
推送目標為Teams,推送大小不大于28KB。
說明釘釘移動端和企業微信暫不支持Markdown中定義的表格的渲染,建議在推送內容中使用表格組件來展示數據內容。飛書與Teams移動版支持正常展示Markdown中定義的表格。
地域限制:華東1(杭州)、華東2(上海)、華北2(北京)、華北3(張家口)、華南1(深圳)、西南1(成都)、新加坡、美國(硅谷)、美國(弗吉尼亞)。
步驟一:新建數據推送目標
數據推送任務可以將查詢信息推送至目標渠道中,創建推送任務前,需要先創建好需要推送的目標,以供后續推送使用。
進入數據服務頁面。
登錄DataWorks控制臺,切換至目標地域后,單擊左側導航欄的 ,在下拉框中選擇對應工作空間后單擊進入數據服務。
在服務開發頁面的左下角單擊彈出設置頁面,切換至推送目標管理頁簽,單擊創建數據推送目標新建需要推送的對象。
創建數據推送目標時,配置如下:
類型:選擇需要推送的渠道類型。
對象名稱:自定義需要新建的推送目標名稱。
Webhook:所選推送渠道中的Webhook鏈接。
說明釘釘機器人Webhook獲取方式可參見:常見問題中的如何獲取企業內部應用機器人Webhook的access_token。
飛書機器人Webhook獲取方式可參見:飛書Webhook觸發器配置。
企業微信機器人Webhook獲取方式可參見:群機器人配置說明。
Teams Webhook獲取方式可參見:創建傳入Webhook。
步驟二:新建數據推送任務
進入數據服務。
登錄DataWorks控制臺,切換至數據源所在地域,單擊左側導航欄的 ,在下拉框中選擇對應工作空間后單擊進入數據服務。
新建數據推送任務。
在數據服務的左側導航欄中,單擊
切換到數據推送頁下,單擊選擇新建數據推送,設置數據推送任務名稱后,單擊確定,進入數據推送任務配置頁面。
步驟三:配置實踐
本文為您提供了七個實踐場景,您可按需求選擇不同的實踐進行操作。
實踐內容 | 說明 |
該推送任務中編寫的SQL用來查詢出如下信息:
| |
該推送任務中編寫的SQL用來查詢最近12個小時內,消耗比較高的Query。可根據業務修改查詢時間,查詢某時間段內消耗較高的Query。 | |
該推送任務中編寫的SQL用來查詢最近3小時內每小時的Query訪問量,可以用來對比判斷每個小時是否有數據量的變化。 | |
該的推送任務中編寫的SQL用來查詢昨日新增的Query的數據量,可根據時間分區的調整來查詢上周、上月等信息。 | |
該推送任務中編寫的SQL用來查詢今天與昨天同一時間對比過去3小時的數據訪問情況,可根據調整時間來查詢更長時間的數據作為對比。 | |
該推送任務中編寫的SQL用來查詢各階段耗時比較高的Query,可根據業務修改時間,實現對目標時間段耗時比較高的Query的查詢。 | |
該推送任務中編寫的SQL用來查詢在一段時間內最先失敗的Query,便于定位問題所在。 |
實踐一:查看制造最多與最慢Query的使用者
雙擊在準備流程中創建好的推送任務,進入數據推送任務的編輯開發頁面。
配置選擇表模塊。
數據源類型:選擇Hologres。
數據源名稱:選擇實踐準備中創建的Hologres數據源。
數據源環境:選擇開發環境。
編寫查詢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富文本中,也可以直接選擇輸出參數至表格中。詳情可參見配置推送內容。數據推送設置。
調度周期:下拉選擇
日
。調度時間:選擇
09:00
。超時定義:系統默認。
生效日期:永久生效。
調度資源組:選擇在實踐準備中準備的通用型資源組。
數據推送目標:選擇步驟一:新建數據推送目標中創建的推送目標。
說明配置項可按業務需求進行配置,詳情請參見推送設置。
測試數據推送任務。
創建好數據推送任務后,您可以單擊工具欄上的保存按鈕,保存當前配置,然后單擊測試進行開發狀態測試,用來測試數據推送是否可以正常推送。
完成數據推送測試后,即可對數據推送任務進行后續發布等操作。
實踐二:查詢近12小時消耗比較高的Query
雙擊在準備流程中創建好的推送任務,進入數據推送任務的編輯開發頁面。
配置選擇表模塊。
數據源類型:選擇Hologres。
數據源名稱:選擇實踐準備中創建的Hologres數據源。
數據源環境:選擇開發環境。
編寫查詢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;
配置參數。
配置推送內容。
推送內容支持表格和Markdown內容的配置,可將輸出參數和賦值參數以
${參數名稱}
占位符的形式添加到Markdown富文本中,也可以直接選擇輸出參數至表格中。詳情可參見配置推送內容。數據推送設置。
調度周期:下拉選擇
日
。調度時間:選擇
09:00
。超時定義:系統默認。
生效日期:永久生效。
調度資源組:選擇在實踐準備中準備的通用型資源組。
數據推送目標:選擇步驟一:新建數據推送目標中創建的推送目標。
說明配置項可按業務需求進行配置,詳情請參見推送設置。
測試數據推送任務。
創建好數據推送任務后,您可以單擊工具欄上的保存按鈕,保存當前配置,然后單擊測試進行開發狀態測試,用來測試數據推送是否可以正常推送。
完成數據推送測試后,即可對數據推送任務進行后續發布等操作。
SQL自定義完成后,SQL返回結果字段將自動填入
。若輸出參數失敗或有誤,您可以關閉自動解析參數,手動新增參數。實踐三:查看最近3小時內每小時的Query訪問量和數據讀取總量
雙擊在準備流程中創建好的推送任務,進入數據推送任務的編輯開發頁面。
配置選擇表模塊。
數據源類型:選擇Hologres。
數據源名稱:選擇實踐準備中創建的Hologres數據源。
數據源環境:選擇開發環境。
編寫查詢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富文本中,也可以直接選擇輸出參數至表格中。詳情可參見配置推送內容。數據推送設置。
調度周期:下拉選擇
日
。調度時間:選擇
09:00
。超時定義:系統默認。
生效日期:永久生效。
調度資源組:選擇在實踐準備中準備的通用型資源組。
數據推送目標:選擇步驟一:新建數據推送目標中創建的推送目標。
說明配置項可按業務需求進行配置,詳情請參見推送設置。
測試數據推送任務。
創建好數據推送任務后,您可以單擊工具欄上的保存按鈕,保存當前配置,然后單擊測試進行開發狀態測試,用來測試數據推送是否可以正常推送。
完成數據推送測試后,即可對數據推送任務進行后續發布等操作。
實踐四:查看昨日新增的Query數量
雙擊在準備流程中創建好的推送任務,進入數據推送任務的編輯開發頁面。
配置選擇表模塊。
數據源類型:選擇Hologres。
數據源名稱:選擇實踐準備中創建的Hologres數據源。
數據源環境:選擇開發環境。
編寫查詢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;
配置參數。
配置推送內容。
推送內容支持表格和Markdown內容的配置,可將輸出參數和賦值參數以
${參數名稱}
占位符的形式添加到Markdown富文本中,也可以直接選擇輸出參數至表格中。詳情可參見配置推送內容。數據推送設置。
調度周期:下拉選擇
日
。調度時間:選擇
09:00
。超時定義:系統默認。
生效日期:永久生效。
調度資源組:選擇在實踐準備中準備的通用型資源組。
數據推送目標:選擇步驟一:新建數據推送目標中創建的推送目標。
說明配置項可按業務需求進行配置,詳情請參見推送設置。
測試數據推送任務。
創建好數據推送任務后,您可以單擊工具欄上的保存按鈕,保存當前配置,然后單擊測試進行開發狀態測試,用來測試數據推送是否可以正常推送。
完成數據推送測試后,即可對數據推送任務進行后續發布等操作。
SQL自定義完成后,SQL返回結果字段將自動填入
。若輸出參數失敗或有誤,您可以關閉自動解析參數,手動新增參數。實踐五:查看與昨天同一時間對比過去3小時的數據訪問量情況
雙擊在準備流程中創建好的推送任務,進入數據推送任務的編輯開發頁面。
配置選擇表模塊。
數據源類型:選擇Hologres。
數據源名稱:選擇實踐準備中創建的Hologres數據源。
數據源環境:選擇開發環境。
編寫查詢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;
配置參數。
配置推送內容。
推送內容支持表格和Markdown內容的配置,可將輸出參數和賦值參數以
${參數名稱}
占位符的形式添加到Markdown富文本中,也可以直接選擇輸出參數至表格中。詳情可參見配置推送內容。數據推送設置。
調度周期:下拉選擇
日
。調度時間:選擇
09:00
。超時定義:系統默認。
生效日期:永久生效。
調度資源組:選擇在實踐準備中準備的通用型資源組。
數據推送目標:選擇步驟一:新建數據推送目標中創建的推送目標。
說明配置項可按業務需求進行配置,詳情請參見推送設置。
測試數據推送任務。
創建好數據推送任務后,您可以單擊工具欄上的保存按鈕,保存當前配置,然后單擊測試進行開發狀態測試,用來測試數據推送是否可以正常推送。
完成數據推送測試后,即可對數據推送任務進行后續發布等操作。
SQL自定義完成后,SQL返回結果字段將自動填入
。若輸出參數失敗或有誤,您可以關閉自動解析參數,手動新增參數。實踐六:查詢最近30分鐘Query各階段耗時比較高的Query
雙擊在準備流程中創建好的推送任務,進入數據推送任務的編輯開發頁面。
配置選擇表模塊。
數據源類型:選擇Hologres。
數據源名稱:選擇實踐準備中創建的Hologres數據源。
數據源環境:選擇開發環境。
編寫查詢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;
配置參數。
配置推送內容。
推送內容支持表格和Markdown內容的配置,可將輸出參數和賦值參數以
${參數名稱}
占位符的形式添加到Markdown富文本中,也可以直接選擇輸出參數至表格中。詳情可參見配置推送內容。數據推送設置。
調度周期:下拉選擇
日
。調度時間:選擇
09:00
。超時定義:系統默認。
生效日期:永久生效。
調度資源組:選擇在實踐準備中準備的通用型資源組。
數據推送目標:選擇步驟一:新建數據推送目標中創建的推送目標。
說明配置項可按業務需求進行配置,詳情請參見推送設置。
測試數據推送任務。
創建好數據推送任務后,您可以單擊工具欄上的保存按鈕,保存當前配置,然后單擊測試進行開發狀態測試,用來測試數據推送是否可以正常推送。
完成數據推送測試后,即可對數據推送任務進行后續發布等操作。
SQL自定義完成后,SQL返回結果字段將自動填入
。若輸出參數失敗或有誤,您可以關閉自動解析參數,手動新增參數。實踐七:查詢最先失敗的Query
雙擊在準備流程中創建好的推送任務,進入數據推送任務的編輯開發頁面。
配置選擇表模塊。
數據源類型:選擇Hologres。
數據源名稱:選擇實踐準備中創建的Hologres數據源。
數據源環境:選擇開發環境。
編寫查詢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;
配置參數。
配置推送內容。
推送內容支持表格和Markdown內容的配置,可將輸出參數和賦值參數以
${參數名稱}
占位符的形式添加到Markdown富文本中,也可以直接選擇輸出參數至表格中。詳情可參見配置推送內容。數據推送設置。
調度周期:下拉選擇
日
。調度時間:選擇
09:00
。超時定義:系統默認。
生效日期:永久生效。
調度資源組:選擇在實踐準備中準備的通用型資源組。
數據推送目標:選擇步驟一:新建數據推送目標中創建的推送目標。
說明配置項可按業務需求進行配置,詳情請參見推送設置。
測試數據推送任務。
創建好數據推送任務后,您可以單擊工具欄上的保存按鈕,保存當前配置,然后單擊測試進行開發狀態測試,用來測試數據推送是否可以正常推送。
完成數據推送測試后,即可對數據推送任務進行后續發布等操作。
SQL自定義完成后,SQL返回結果字段將自動填入
。若輸出參數失敗或有誤,您可以關閉自動解析參數,手動新增參數。后續步驟
創建完成數據推送任務后,可以對推送任務進行管理,詳情請參見發布推送任務。