dolphinscheduler中,我們從一個mysql表導出數據,上傳到hdfs, 再創建一個臨時表,所以需要用到列名定義和列名列表。
原來定義兩個變量,不僅繁鎖,還容易出現差錯,比如兩者列序不對。
所以考慮只定義列定義變量,前一個任務從列定義中提取列名生成一個變量供后面任務使用。
一個從列定義中提取列名列表的腳本。
比如列定義:
id varchar(32) COMMENT '個人客戶id',customer_id varchar(32) COMMENT '客戶ID',code varchar(50) COMMENT '客戶編號',name varchar(100) COMMENT '客戶名稱',status tinyint COMMENT '客戶狀態'
提取的列名列表:
t.id,t.customer_id,t.code,t.name, t.status
腳本:
columns1=`echo "${colDefs}" | sed 's/\s*\([a-z|A-Z|0-9|_]\+\)[^,]*/t.\1/g'`
echo "#{setValue(slctColums=${columns1})}"
echo "parsed columns: $columns1"
dolphinscheduler示例
后面的任務就可以用select ${slctColumns} from table1 t 使用參數了
r后記:發現有點問題如: salary decimal(28,2) COMMENT ‘可支配余月收入’,
會變成
t.salary,t.2
所以,后面再sed一次掉這種
columns1=`echo "${colDefs}" | sed 's/\s*\([a-z|A-Z|0-9|_]\+\)[^,]*/t.\1/g' | sed 's/t\.[0-9]\+,//g'`
echo "#{setValue(slctColums=${columns1})}"
echo "parsed columns: $columns1"