數(shù)據(jù)推送
數(shù)據(jù)推送功能是DataWorks提供的一項數(shù)據(jù)服務(wù),通過SQL查詢數(shù)據(jù)源獲取數(shù)據(jù)并將其推送至Webhook。可以通過簡單配置,實現(xiàn)定期將所需的業(yè)務(wù)數(shù)據(jù)推送至多個不同的Webhook。本文將為您介紹數(shù)據(jù)推送功能的配置與使用。
數(shù)據(jù)推送簡介
DataWorks提供了數(shù)據(jù)推送服務(wù),該服務(wù)可以創(chuàng)建推送任務(wù),在任務(wù)內(nèi)編寫單表或多表查詢的SQL代碼來圈定數(shù)據(jù)范圍,并添加富文本或表格等內(nèi)容來組織推送消息的內(nèi)容。可以通過配置周期任務(wù),定時將數(shù)據(jù)推送至目標(biāo)Webhook中。
支持的數(shù)據(jù)源類型與推送渠道
支持推送的數(shù)據(jù)源類型:
MySQL(兼容StarRocks/Doris)
PostgreSQL(兼容Snowflake/Redshift)
Hologres
MaxCompute(ODPS)
ClickHouse
支持的推送渠道:釘釘群、飛書群、企業(yè)微信群以及Teams。
數(shù)據(jù)推送服務(wù)使用限制
數(shù)據(jù)推送功能推送至不同對象時的數(shù)據(jù)大小限制:
推送目標(biāo)為釘釘,推送數(shù)據(jù)大小不超過20KB。
推送目標(biāo)為飛書,推送數(shù)據(jù)大小不超過30KB,圖片小于10MB。
推送目標(biāo)為企業(yè)微信,每個機(jī)器人發(fā)送的消息不能超過20條/分鐘。
推送目標(biāo)為Teams,推送大小不大于28KB。
說明釘釘移動端和企業(yè)微信暫不支持Markdown中定義的表格的渲染,建議在推送內(nèi)容中使用表格組件來展示數(shù)據(jù)內(nèi)容。飛書與Teams移動版支持正常展示Markdown中定義的表格。
僅以下地域的DataWorks工作空間可使用數(shù)據(jù)推送功能:華東1(杭州)、華東2(上海)、華北2(北京)、華北3(張家口)、華南1(深圳)、西南1(成都)、新加坡、美國(硅谷)、美國(弗吉尼亞)。
前提條件
在支持地域已創(chuàng)建數(shù)據(jù)源。DataWorks創(chuàng)建數(shù)據(jù)源具體操作,請參見創(chuàng)建并管理數(shù)據(jù)源。
操作步驟
步驟一:創(chuàng)建數(shù)據(jù)推送任務(wù)
進(jìn)入數(shù)據(jù)服務(wù)。
登錄DataWorks控制臺,切換至數(shù)據(jù)源所在地域,單擊左側(cè)導(dǎo)航欄的 ,在下拉框中選擇對應(yīng)工作空間后單擊進(jìn)入數(shù)據(jù)服務(wù)。
新建數(shù)據(jù)推送任務(wù)。
在數(shù)據(jù)服務(wù)的左側(cè)導(dǎo)航欄中,單擊
切換到數(shù)據(jù)推送頁下,單擊選擇新建數(shù)據(jù)推送,設(shè)置數(shù)據(jù)推送任務(wù)名稱后,單擊確定,進(jìn)入數(shù)據(jù)推送任務(wù)配置頁面。
步驟二:配置數(shù)據(jù)推送任務(wù)
準(zhǔn)備工作(可選)
為了便于您快速完成數(shù)據(jù)推送,后續(xù)內(nèi)容將以MaxCompute表數(shù)據(jù)查詢結(jié)果推送為例進(jìn)行說明,本示例中,使用表名為sales
,通過數(shù)據(jù)推送功能將每日每部門銷售金額,以及銷售金額相較于前一天的變化量,推送至指定渠道,如需實操,請?zhí)崆霸趯?yīng)環(huán)境準(zhǔn)備好sales
表,以下為sales
表的建表與數(shù)據(jù)插入語句。建表詳情請參見創(chuàng)建并使用MaxCompute表。
CREATE TABLE IF NOT EXISTS sales (
id BIGINT COMMENT '唯一標(biāo)識符',
department STRING COMMENT '部門名稱',
revenue DOUBLE COMMENT '收入金額'
) PARTITIONED BY (ds STRING);
-- 插入示例數(shù)據(jù)到分區(qū)
INSERT INTO TABLE sales PARTITION(ds='20240101')(id, department, revenue ) VALUES (1, '部門1', 12000.00);
INSERT INTO TABLE sales PARTITION(ds='20240101')(id, department, revenue ) VALUES (2, '部門2', 21000.00);
INSERT INTO TABLE sales PARTITION(ds='20240101')(id, department, revenue ) VALUES (3, '部門3', 5000.00);
INSERT INTO TABLE sales PARTITION(ds='20240102')(id, department, revenue ) VALUES (1, '部門1', 11000.00);
INSERT INTO TABLE sales PARTITION(ds='20240102')(id, department, revenue ) VALUES (2, '部門2', 20000.00);
INSERT INTO TABLE sales PARTITION(ds='20240102')(id, department, revenue ) VALUES (3, '部門3', 10000.00);
選擇數(shù)據(jù)源
選擇需要進(jìn)行數(shù)據(jù)推送的數(shù)據(jù)源類型,數(shù)據(jù)源名稱,以及數(shù)據(jù)源環(huán)境(您可根據(jù)本次數(shù)據(jù)推送的開發(fā)表還是生產(chǎn)表來選擇數(shù)據(jù)源環(huán)境),確定需要進(jìn)行數(shù)據(jù)推送的數(shù)據(jù)表所在環(huán)境。若您需要實操,請確認(rèn)您準(zhǔn)備工作階段創(chuàng)建的sales表所在環(huán)境。
目前數(shù)據(jù)推送支持的數(shù)據(jù)源類型,請參見支持的數(shù)據(jù)源類型與推送渠道。
編寫查詢SQL
圈定數(shù)據(jù)推送范圍與獲取數(shù)據(jù)。
在編寫查詢SQL模塊,可以通過單表或多表查詢SQL來圈定數(shù)據(jù)推送內(nèi)容,例如:
-- 獲取20240102各部門銷售金額 SELECT id, department, revenue FROM sales WHERE ds='20240102'; -- 獲取相較于前一天銷售金額的變化量 SELECT a.revenue - b.revenue AS diff FROM sales a LEFT JOIN sales b ON a.id = b.id AND a.ds > b.ds WHERE a.ds = '20240102'AND b.ds = '20240101';
SQL自定義完成后,SQL返回結(jié)果字段將自動填入
。若輸出參數(shù)失敗或有誤,您可以關(guān)閉自動解析參數(shù),手動新增參數(shù)。您還可以通過
${變量名}
的方式在SQL中配置自定義變量,該變量為賦值參數(shù)(賦值參數(shù)可賦值時間表達(dá)式及常量),從而實現(xiàn)代碼動態(tài)入?yún)ⅲ蓞⒁?a href="#c5e03aa6397qy" id="6328498c45vg7" title="" class="xref">配置推送內(nèi)容。-- 結(jié)合調(diào)度參數(shù)實現(xiàn)時間變量的動態(tài)賦值。 -- 每天獲取最新的各部門銷售金額 SELECT id, department, revenue FROM sales WHERE ds='${date}'; -- 同時獲取相較于前一天銷售金額的變化量 SELECT a.revenue - b.revenue AS diff FROM sales a LEFT JOIN sales b ON a.id = b.id and a.ds > b.ds WHERE a.ds = '${date}' AND b.ds = '${previous_date}';
分段查詢。
當(dāng)數(shù)據(jù)表量龐大的場景下,數(shù)據(jù)推送支持您通過 Next Token 方式分段查詢數(shù)據(jù)。您可點擊代碼編輯工具欄中的
查看使用說明。
配置推送內(nèi)容
在推送內(nèi)容模塊,您可以通過Markdown和表格等方式編輯消息內(nèi)容,該消息內(nèi)容為推送至Webhook上的內(nèi)容。
在標(biāo)題欄自定義消息標(biāo)題后,在正文欄單擊新增,即可選擇通過Markdown或表格來編輯推送內(nèi)容。以下為示例配置,您可以點擊工具欄中的預(yù)覽查看推送樣式。
Markdown內(nèi)容模塊
使用參數(shù)變量:在數(shù)據(jù)推送內(nèi)容編寫中,可以將賦值參數(shù)與輸出參數(shù),以
${參數(shù)名稱}
添加至富文本中,在數(shù)據(jù)推送任務(wù)運行時替換成相應(yīng)的賦值數(shù)據(jù)或SQL的查詢結(jié)果。賦值參數(shù):需要在
處為變量賦值常量或調(diào)度參數(shù)的時間表達(dá)式。輸出參數(shù):為SQL查詢中
SELECT A,B… FROM TABLE
中的A,B…
字段名或字段別名,是查詢出來的數(shù)據(jù)。
@相應(yīng)成員:可以在推送至飛書Webhook時配置,實現(xiàn)自動@對應(yīng)人員的功能。
Markdown模式默認(rèn)采用富文本形式配置消息內(nèi)容,在推送至飛書時使用@功能提醒相關(guān)人員查看消息,您可點擊切換至Markdown源碼模式,通過
<at id="all" />
或<at email="username@example.com" />
可以實現(xiàn)。
Markdown除以上功能外,還支持添加圖片、插入釘釘Emoji等功能。
表格內(nèi)容模塊
單擊新增一列,增加表格列數(shù),可將參數(shù)關(guān)聯(lián)在對應(yīng)列上。
在推送目標(biāo)為飛書Webhook時,單擊創(chuàng)建好的表格列右側(cè),單擊打開修改字段信息對話框,對話框內(nèi),可以調(diào)整目前字段、展示名、展示樣式以及條件,實現(xiàn)推送內(nèi)容顯示效果的多樣性。
目前字段:可切換成其他輸出參數(shù)字段。
展示名:以表格形式推送至辦公軟件時,期望展示在表頭的名稱。
展示樣式:給表格具體值前或值后添加固定展示的前綴或后綴。
條件:將表格具體值與配置的比較數(shù)值進(jìn)行比較,可自定義符合與不符合時數(shù)值展示顏色,以及附加標(biāo)示符。
說明Markdown富文本模式下表格創(chuàng)建方式可參考Markdown官方表格教程。
不同渠道的表格撰寫方式不同,不同渠道推送支持表格內(nèi)容如下:
釘釘:支持Markdown表格和數(shù)據(jù)推送內(nèi)置表格,不支持展示修改字段信息彈窗中對字段配置的展示樣式和條件的顯示效果,但釘釘移動端:不支持顯示表格。
飛書:支持?jǐn)?shù)據(jù)推送Markdown表格和數(shù)據(jù)推送內(nèi)置表格,可對表格進(jìn)行渲染。
企業(yè)微信:支持推送Markdown表格,但不支持對Markdown表格進(jìn)行渲染。
Teams移動端:支持?jǐn)?shù)據(jù)推送Markdown,可對表格進(jìn)行渲染。
步驟三:數(shù)據(jù)推送設(shè)置
創(chuàng)建數(shù)據(jù)推送目標(biāo)
在配置推送設(shè)置前,需要先在服務(wù)開發(fā)頁面的左下角單擊彈出設(shè)置頁面,切換至推送目標(biāo)管理頁簽,單擊創(chuàng)建數(shù)據(jù)推送目標(biāo)新建需要推送的目標(biāo)。
創(chuàng)建數(shù)據(jù)推送目標(biāo)時,需要如下配置:
類型:選擇需要推送的渠道類型。
對象名稱:自定義需要新建的推送目標(biāo)名稱。
Webhook:所選推送渠道中的Webhook鏈接。
釘釘機(jī)器人Webhook獲取方式可參見:常見問題中的如何獲取企業(yè)內(nèi)部應(yīng)用機(jī)器人Webhook的access_token。
飛書機(jī)器人Webhook獲取方式可參見:飛書Webhook觸發(fā)器配置。
企業(yè)微信機(jī)器人Webhook獲取方式可參見:群機(jī)器人配置說明。
Teams Webhook獲取方式可參見:創(chuàng)建傳入Webhook。
推送設(shè)置
單擊右側(cè)推送設(shè)置即可設(shè)置推送任務(wù)的調(diào)度周期配置,調(diào)度資源配置以及推送目標(biāo)配置,可實現(xiàn)數(shù)據(jù)推送任務(wù)按配置調(diào)度周期進(jìn)行推送。具體的配置項有:
調(diào)度周期運行時間配置:用以配置數(shù)據(jù)推送服務(wù)推送編輯好的推送內(nèi)容的調(diào)度周期與調(diào)度的具體時間。
調(diào)度周期
指定時間
調(diào)度時間
范例
月
指定在每月內(nèi)哪些天運行該推送任務(wù)
推送日內(nèi),該數(shù)據(jù)推送任務(wù)的調(diào)度時間
調(diào)度周期:月
指定時間:每月1號
調(diào)度時間:08:00
實際運行時間:每月1日的08:00該推送任務(wù)會運行。
周
指定在每周內(nèi)哪些天運行該推送任務(wù)
推送日內(nèi),該數(shù)據(jù)推送任務(wù)的調(diào)度時間
調(diào)度周期:周
指定時間:星期一
調(diào)度時間:09:00
實際運行時間:每周星期一09:00該推送任務(wù)會運行。
日
說明日周期為每日調(diào)度。
推送日內(nèi),該數(shù)據(jù)推送任務(wù)的調(diào)度時間
調(diào)度周期:日
調(diào)度時間:08:00
實際運行時間:每天08:00該推送任務(wù)會運行。
小時
說明可選擇兩種推送模式:
按小時的時間間隔進(jìn)行推送。
按指定的小時和分鐘進(jìn)行推送。
按小時的時間間隔進(jìn)行推送:
開始時間:00:00
時間間隔:1小時
結(jié)束時間:23:59
實際運行時間:每天從00:00-23:59每小時推送一次。
按指定的小時和分鐘進(jìn)行推送:
指定小時:0時、1時
指定分鐘:10分
實際運行時間:每天的00:10與01:10各推送一次。
超時定義:可限制數(shù)據(jù)推送在開始運行后的時長,若超出配置的時長,則終止任務(wù)運行。
系統(tǒng)默認(rèn):在系統(tǒng)默認(rèn)狀態(tài)下會根據(jù)負(fù)載情況動態(tài)調(diào)整任務(wù)超時定義,取值范圍為3至7天不等。超時任務(wù)將被終止運行。
范例:自定義超時時間為1小時,推送任務(wù)達(dá)到推送時間點后超出1小時,該任務(wù)會被終止運行。
生效日期:配置當(dāng)前數(shù)據(jù)推送任務(wù)的生效時間,如果當(dāng)前系統(tǒng)時間在配置的生效日期范圍之外,任務(wù)將不會被自動調(diào)度運行。
永久生效:數(shù)據(jù)推送任務(wù)將永久生效,不受生效日期限制。
范例:配置指定時間范圍為2024-01-01至2024-12-31時,該推送任務(wù)會在指定時間段內(nèi),按照配置的調(diào)度周期進(jìn)行推送。
調(diào)度資源組:可配置獨享調(diào)度資源組或Serverless資源組(通用型資源組),為數(shù)據(jù)推送任務(wù)提供調(diào)度資源組。資源組詳情可參見:資源組管理。
數(shù)據(jù)推送目標(biāo):可將數(shù)據(jù)推送服務(wù)的已配置好的內(nèi)容,推送至所選擇的對象,只可以選擇已創(chuàng)建好的推送目標(biāo),推送目標(biāo)在數(shù)據(jù)推送管理處進(jìn)行配置。
說明推送至釘釘Webhook時,需要添加推送機(jī)器人配置時在
中配置關(guān)鍵詞,并且確保推送內(nèi)容中包含該關(guān)鍵詞才可推送成功。
步驟四:測試數(shù)據(jù)推送任務(wù)
創(chuàng)建好數(shù)據(jù)推送任務(wù)后,您可以單擊工具欄上的保存按鈕,保存當(dāng)前配置,然后單擊測試進(jìn)行開發(fā)態(tài)測試,用來測試數(shù)據(jù)推送是否可以正常推送。需要您手動為變量賦值常量。
數(shù)據(jù)推送任務(wù)推送提交發(fā)布前,必須通過開發(fā)態(tài)測試推送,才可正常提交發(fā)布。
步驟五:發(fā)布推送任務(wù)
管理數(shù)據(jù)推送任務(wù)版本
確認(rèn)開發(fā)過程中的測試無誤后,請您點擊提交,若未提交推送任務(wù),則推送任務(wù)只處于草稿狀態(tài),不會生成新的版本。
在提交服務(wù)后,會生成新版本,在右側(cè)版本面板內(nèi)找到已提交且可發(fā)布的版本,單擊發(fā)布,即可將該數(shù)據(jù)推送任務(wù)進(jìn)行發(fā)布,實現(xiàn)按推送設(shè)置的配置進(jìn)行周期推送。
在版本面板內(nèi)可以對數(shù)據(jù)推送任務(wù)進(jìn)行如下管理。
任務(wù)狀態(tài)
操作
說明
發(fā)布
數(shù)據(jù)推送管理
點擊跳轉(zhuǎn)至數(shù)據(jù)推送管理頁面,可以查看已經(jīng)上線的任務(wù)詳細(xì)信息,可參見管理數(shù)據(jù)推送任務(wù)。
可發(fā)布
發(fā)布
將對應(yīng)版本的任務(wù)進(jìn)行發(fā)布。
廢棄
廢棄對應(yīng)版本的任務(wù),并將任務(wù)狀態(tài)切換為廢棄。
離線、廢棄
版本詳情
查看對應(yīng)版本數(shù)據(jù)推送任務(wù)的配置信息以及相應(yīng)推送內(nèi)容。
回滾
回滾到對應(yīng)版本。
說明版本詳情、回滾兩種操作在任務(wù)的所有狀態(tài)下都存在且功能一致。
管理數(shù)據(jù)推送任務(wù)
在數(shù)據(jù)推送任務(wù)發(fā)布成功后,在版本面板內(nèi)的操作列單擊數(shù)據(jù)推送管理或以
路徑來到數(shù)據(jù)推送任務(wù)列表頁面。該頁面內(nèi)可查看所有已發(fā)布的數(shù)據(jù)推送任務(wù),并展示其任務(wù)ID、名稱、數(shù)據(jù)源名稱、數(shù)據(jù)源環(huán)境、節(jié)點模式、調(diào)度資源組、負(fù)責(zé)人、發(fā)布人以及最后發(fā)布時間,并且在操作列對已發(fā)布數(shù)據(jù)推送任務(wù)做如下操作:
操作類型 | 說明 |
下線 | 下線選中任務(wù)。 |
測試 | 跳轉(zhuǎn)至數(shù)據(jù)推送測試,可以對已上線的任務(wù)進(jìn)行測試。 |
單擊名稱列的即可跳轉(zhuǎn)至所選任務(wù)的版本詳情頁面。
測試已上線數(shù)據(jù)推送任務(wù)
數(shù)據(jù)推送任務(wù)上線后,數(shù)據(jù)推送任務(wù)會根據(jù)您配置的推送設(shè)置,推送內(nèi)容至指定的推送目標(biāo),您可以通過以下兩種方式進(jìn)入數(shù)據(jù)推送測試頁面。
方式一:
方式二:
通過測試已上線的數(shù)據(jù)推送任務(wù),可以確認(rèn)數(shù)據(jù)推送任務(wù)是否能夠正常推送數(shù)據(jù),以及推送目標(biāo)是否可以正常接收數(shù)據(jù)。