利用Python處理DAX多條件替換

在這里插入圖片描述

小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)

我們來看一下結果輸出:
在這里插入圖片描述
在這里插入圖片描述

最近因為工作原因,停更了一段時間,還請小伙伴們見諒哦。
后面如果時間充足,白茶還會繼續更新的哦,嘿嘿。

在這里插入圖片描述
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/20794.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/20794.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/20794.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從JS角度直觀理解遞歸的本質

讓我們寫一個函數 pow(x, n),它可以計算 x 的 n 次方。換句話說就是,x 乘以自身 n 次。 有兩種實現方式。 迭代思路:使用 for 循環: function pow(x, n) {let result 1;// 在循環中,用 x 乘以 result n 次for (let i…

Springboot中使用spel+自定義注解實現權限控制

使用spel+自定義注解實現權限控制的案例很多, 比如springsecurity,本文也是一同樣的方式實現權限校驗 定義注解 package com.example.demo.anno;import java.lang.annotation.ElementType; import java.lang.annotation.

opencv進階 ——(九)圖像處理之人臉修復祛馬賽克算法CodeFormer

算法簡介 CodeFormer是一種基于AI技術深度學習的人臉復原模型,由南洋理工大學和商湯科技聯合研究中心聯合開發,它能夠接收模糊或馬賽克圖像作為輸入,并生成更清晰的原始圖像。算法源碼地址:https://github.com/sczhou/CodeFormer…

如何快速找到 RCE

背景介紹 本文將分享國外白帽子在‘偵察’階段如何快速發現 RCE 漏洞的經歷。以Apache ActiveMQ 的 CVE-2023–46604 為特例,重點介紹如何發現類似此類的漏洞,讓我們開始吧。 快速發現過程 在‘偵察’階段,白帽小哥會保持每周更新一次目標…

1940java swing零售庫存管理系統myeclipse開發Mysql數據庫CS結構java編程

一、源碼特點 java swing 零售庫存管理系統 是一套完善的窗體設計系統,對理解SWING java 編程開發語言有幫助,系統具有完整的源代碼和數據庫,,系統主要采用C/S模式開發。 應用技術:javamysql 開發工具:…

適合技術小白學習的項目1863java在線視頻網站系統 Myeclipse開發mysql數據庫web結構java編程計算機網頁項目

一、源碼特點 java在線視頻網站系統 是一套完善的web設計系統,對理解JSP java編程開發語言有幫助采用了java設計,系統具有完整的源代碼和數據庫,系統采用web模式,系統主要采用B/S模式開發。 開發環境為TOMCAT7.0,Myeclipse8.5開發…

數據庫、數據表的基本操作

1.數據庫的基本操作 (1)創建數據庫 (2)刪除數據庫 (3)將數據庫的字符集修改為gbk gbk是漢字內碼擴展規范,是GB2312和GB13000的擴展,主要用于簡體中文。 (4)…

LabVIEW在高校電力電子實驗中的應用

概述:本文介紹了如何利用LabVIEW優化高校電力電子實驗,通過圖形化編程實現參數調節、實時數據監控與存儲,并與Simulink聯動,提高實驗效率和數據處理能力。 需求背景高校實驗室在進行電機拖動和電力電子實驗時,通常使用…

前端框架安全防范

前端框架安全防范 在現代Web開發中,前端框架如Angular和React已經成為構建復雜單頁面應用(SPA)的主流工具。然而,隨著應用復雜度的增加,安全問題也變得越來越重要。本文將介紹如何在使用Angular和React框架時&#xf…

Java中的synchronized關鍵字詳解

Java中的synchronized關鍵字詳解 1. 引言 在Java編程中,多線程是提高應用性能的重要手段之一。然而,多線程環境下共享資源的訪問控制成為必須面對的問題。synchronized關鍵字作為Java語言提供的一種同步機制,能夠有效地解決這一問題。本文將…

施耐德 BAS PLC 基本操作指南

CPU 型號 項目使用的 PLC 型號為:施耐德昆騰 Quantum 140 CPU 67160 P266 CPU ,支持熱備冗余,內部存儲 1024K,支持 2 個 PCMCIA 擴展卡槽CPU 模塊自帶接口:MB 串口接口、MB 串口接口、USB 接口、以太網接口&#xff…

MATLAB算法實戰應用案例精講-【數模應用】聯合分析(附python和MATLAB代碼實現)

目錄 前言 算法原理 什么是聯合分析? 聯合分析的基本原理與步驟

【HarmonyOS】List組件多層對象嵌套ForEach渲染更新的處理

【HarmonyOS】List組件多層對象嵌套ForEach渲染更新的處理 問題背景: 在鴻蒙中UI更新渲染的機制,與傳統的Android IOS應用開發相比。開發會簡單許多,開發效率提升顯著。 一般傳統應用開發的流程處理分為三步:1.畫UI,…

TiDB-從0到1-分布式存儲

TiDB從0到1系列 TiDB-從0到1-體系結構TiDB-從0到1-分布式存儲TiDB-從0到1-分布式事務TiDB-從0到1-MVCC 一、TiDB-DML語句執行流程(增刪改) DML流程概要 1、協議驗證 用戶連接到TiDB Server后首先工作的是Protocol Layer模塊,該模塊會對用…

mysql表字段超過多少影響性能 mysql表多少效率會下降

一直有傳言說,MySQL 表的數據只要超過 2000 萬行,其性能就會下降。而本文作者用實驗分析證明:至少在 2023 年,這已不再是 MySQL 表的有效軟限制。 傳言 互聯網上有一則傳言說,我們應該避免單個 MySQL 表中的數據超過 …

內網滲透-在HTTP協議層面繞過WAF

進入正題,隨著安全意思增強,各企業對自己的網站也更加注重安全性。但很多web應用因為老舊,或貪圖方便想以最小代價保證應用安全,就只僅僅給服務器安裝waf。 本次從協議層面繞過waf實驗用sql注入演示,但不限于實際應用…

[數據集][目標檢測]輪胎檢測數據集VOC+YOLO格式439張1類別

數據集格式:Pascal VOC格式YOLO格式(不包含分割路徑的txt文件,僅僅包含jpg圖片以及對應的VOC格式xml文件和yolo格式txt文件) 圖片數量(jpg文件個數):439 標注數量(xml文件個數):439 標注數量(txt文件個數):439 標注類別…

mysql怎么部署雙機

MySQL的雙機部署是為了實現數據的高可用性和容錯性。以下是MySQL雙機熱備部署的基本步驟,我會盡量清晰地分點表示和歸納: 1. 環境準備 安裝MySQL:在兩臺服務器上分別安裝MySQL數據庫。確保版本兼容。 網絡配置:確保兩臺服務器之…

題目:判斷一個素數能被幾個9整除

題目:判斷一個素數能被幾個9整除 There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheated should …

顛仆流離學二叉樹2 (Java篇)

本篇會加入個人的所謂魚式瘋言 ??????魚式瘋言:??????此瘋言非彼瘋言 而是理解過并總結出來通俗易懂的大白話, 小編會盡可能的在每個概念后插入魚式瘋言,幫助大家理解的. 🤭🤭🤭可能說的不是那么嚴謹.但小編初心是能讓更多人…