利用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.mzph.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…

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…

施耐德 BAS PLC 基本操作指南

CPU 型号 项目使用的 PLC 型号为:施耐德昆腾 Quantum 140 CPU 67160 P266 CPU ,支持热备冗余,内部存储 1024K,支持 2 个 PCMCIA 扩展卡槽CPU 模块自带接口:MB 串口接口、MB 串口接口、USB 接口、以太网接口&#xff…

【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 标注类别…

颠仆流离学二叉树2 (Java篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

泛型知识汇总

演示代码&#xff1a; package exercise;import java.util.Arrays;public class MyArrayList<E> {Object[] obj new Object[10];int size;public boolean add(E e) {obj[size] e;size;return true;}public E get(int index) {return (E) obj[index];}//没有这个函数&a…

现代信号处理12_谱估计的4种方法(CSDN_20240602)

Slepian Spectral Estimator(1950) 做谱估计的目标是尽可能看清楚信号功率谱在某一个频率上的情况&#xff0c;假设我们想了解零频时的分布&#xff0c;最理想的情况是滤波器的传递函数H(ω) 是一个冲激函数&#xff0c;这样就没有旁瓣&#xff0c;也就没有泄漏&#xff1b;其次…

【OpenHarmony】TypeScript 语法 ③ ( 条件语句 | if else 语句 | switch case 语句 )

文章目录 一、条件语句1、if else 语句2、switch case 语句 参考文档 : <HarmonyOS第一课>ArkTS开发语言介绍 一、条件语句 1、if else 语句 TypeScript 中的 if 语句 / if else 语句 用法 , 与 JavaScript 语言中的 if 语句 / if else 语句 语法 基本相同 ; if else 语…

项目质量管理

目录 1.概述 2.三个关键过程 2.1.规划质量管理&#xff08;Plan Quality Management&#xff09; 2.2.管理质量&#xff08;Manage Quality&#xff09; 2.3.控制质量&#xff08;Control Quality&#xff09; 3.应用场景 3.1.十个应用场景 3.2.产品设计与开发 4.小结…

使用PyCharm 开发工具创建工程

一. 简介 前面学习了 安装 python解释器。如何安装python的一种开发工具 PyCharm。 本文来简单学习一下&#xff0c;如何使用 PyCharm 开发工具创建一个简单的 python工程。 二. PyCharm 开发工具创建一个工程 1. 首先&#xff0c;首先打开PyCharm 开发工具。选择 创建一…