本週為大家解析設置了數據質量校驗,但是未處觸發校驗的情況
觸發校驗前提:
DQC必須要在調度觸發任務,並且對錶數據有修改之後才可以觸發,例如:
1、insert overwrite table xxxxxxx
2、create table as select xxxxxxx
設置了校驗,也有對錶數據修改的操作,但未觸發校驗的日誌表現情況:
觸發了DQC Hook,但實際並沒有進行數據質量校驗的情況,是未觸發實際的校驗,一般有以下幾種情況:
1、如果是SQL級別的校驗,在觸發時,日誌中打印的業務日期set SKYNET_BIZDATE=20190826;必須和insert的分區相符,才可以觸發。類似如下截圖所示,業務日期和觸發分區不符,必須改成任務級別才可以。
2、用戶在分區表達式中設置了對當前時間前一天的校驗,但在運行日誌中,校驗的又是當前時間的分區,會出現匹配不上分區的情況,不會觸發規則校驗,這時候,需要把分區表達式中改為對當前時間的校驗,即:ds=${yyyymmdd}/xxxxxxxx/xxxx/xxx……
下圖中的另一個情況是:用戶設置了多級分區,但日誌中請求DQC的參數數據顯示的分區順序,沒有和設置的分區表達式中的分區順序匹配上,這也是一種不會觸發校驗的情況。
3、odps表有二級分區,但在規則配置的分區表達式中,只設置了一級分區表達式,同樣也會因為沒有匹配上分區,而不觸發校驗。
分區表達式
分區表達式一定要寫到最小粒度,而DQC支持的最小粒度為天。例如:我odps表有二級分區,ds=yyyymmdd hh=hh24,那麼在寫分區表達式時,一定要指定到二級分區hh,否則無法觸發校驗。
其中彈內需要使用正則表達式來編寫,彈內、公有云多級分區表達式如下所示:
彈內多級分區寫法:ds=${yyyymmdd-1}/hh=<[a-zA-Z0-9_-]*>
公有云多級分區寫法:ds=$[yyyymmdd]/hh=$[hh24]
注意:彈內分區表達式符號使用“{}”,公有云符號使用“[]”。
總結:
觸發數據質量規則校驗,必須要對odps表數據有修改(insert、create)之後、表的分區也和規則設置的分區表達式匹配上方可觸發哦。
DataWorks百問百答歷史記錄 請點擊這裡查看>>
更多DataWorks技術和產品信息,歡迎加入【DataWorks釘釘交流群】