小A:白茶,救命啊~~~
白茶:什么情況?
小A:是這樣的,最近不是臨近項目上線嘛,有一大波度量值需要進行類似的調整,一個兩個倒沒啥,600多個,兄弟,救命啊~~~
白茶(假裝沉思):兄弟,你這個事不好搞啊!
小A(眼神暗示):放心 ,規矩我懂!
白茶:開搞開搞!
在實際業務場景中,上述情況產生的頻率是非常高的,究其根本,其實有三種原因:
-
業務邏輯在頻繁的改動,牽一發而動全身
-
數據來源駁雜而不唯一
-
KPI指標過多,觀察口徑統一
舉個例子
假設現在存在以下度量值:
Amt =
SUMX ( 'Fact_Sales', 'Fact_Sales'[Quantity] * RELATED ( Dim_Product[Price] ) )
Qty =
SUM ( 'Fact_Sales'[Quantity] )
AmtUnit =
SWITCH (SELECTEDVALUE ( Config_Unit[UnitOrder] ),1, [Amt],2, [Amt] / 1000,3, [Amt] / 7.2,4,[Amt] / 7.2 / 1000
)
QtyUnit =
SWITCH (SELECTEDVALUE ( Config_Unit[UnitOrder] ),1, [Qty],2, [Qty] / 1000,3, [Qty],4, [Qty] / 1000
)
AmtData =
SWITCH (SELECTEDVALUE ( Config_Date[DateOrder] ),1, [AmtUnit],2, CALCULATE ( [AmtUnit], DATESQTD ( 'Dim_Date'[Date] ) ),3, CALCULATE ( [AmtUnit], DATESYTD ( 'Dim_Date'[Date] ) )
)
QtyData =
SWITCH (SELECTEDVALUE ( Config_Date[DateOrder] ),1, [QtyUnit],2, CALCULATE ( [QtyUnit], DATESQTD ( 'Dim_Date'[Date] ) ),3, CALCULATE ( [QtyUnit], DATESYTD ( 'Dim_Date'[Date] ) )
)
其前端頁面展示如下:
在上圖示例中,我們不難發現,Unit
類型的度量值是為了切換單位使用的,而DataType
是為了切換觀測周期使用的,例如查看當月值、季度累計、年累計。
現在我們需要將上述代碼中的數字,切換為文本類型,例如:Unit中的1,切換成RMB,DataType中的1切換成MTH,以此類推。
如果僅是上圖這幾個度量值,那么修改起來是非常簡單的,但是如果“數據量級很大”,且“度量值很多”,這種情況下我們修改起來是很頭疼的,有沒有一種便捷的方法能解決這個問題呢?
解決方案
看到這里,相信有的小伙伴已經意識到了,這種多條件判斷,且多條件替換的場景,可以用正則來解決。
但是還可以深化,如果我不會正則怎么辦?
我們可以在Python中使用正則來解決此問題,利用通用的Python代碼,后續有復用場景僅需微調即可。
代碼如下:
import re# 樣例數據
text = """
在這里輸入需要替換的文本
"""# 定義替換規則
replacement_dict = {'條件1': '替換1','條件2': '替換2','條件3': '替換3'
}# 定義替換函數
def replace_func(match):return f'{replacement_dict[match.group(1)]},'# 正則替換
pattern = re.compile(r'\b(1|2|3),')
result = pattern.sub(replace_func, text)print(result)
我們來看一下結果輸出:
最近因為工作原因,停更了一段時間,還請小伙伴們見諒哦。
后面如果時間充足,白茶還會繼續更新的哦,嘿嘿。