Power BI批量导入度量值

news/2025/3/10 11:02:36/文章来源:https://www.cnblogs.com/qianslup/p/18123857

一、概述

1.1 适用场景

在PB中如果需要大量创建度量值,并对度量值的格式进行各种设置。
如果一个个进行操作,则耗时耗力。

解决方法是将度量值的写在csv或者是txt文件中。
然后读取文件,完成度量值的编写。

 

1.2 关键节点

  • 编写大量度量值(我用Python,循环同一类形成度量值)
  • 正则表达式的编写,可以在这个网站测试:https://regex101.com/
  • C#的编写

 

 1.3 基本信息

用到的工具

  • Power BI Desktop    2.126.1261.0 64-bit
  • Python   3.11.8
  • Tabular Editor 2.23.1

 

1.4 原始数据

 

上面的数据被我放在了: E:\pbi\d01_省份表.csv

 

二、编写度量值

编写度量值的方式很多,可以手动编写,也可以借助软件完成。

但是用各种软件编写时,可能存在看不见的字符。

如果在csv中编写,建议用txt打开看一下,txt可以看到csv中一些见不到的字符。

2.1 Python 初步编写度量值

import pandas as pdfile_path_origen = r'E:\pbi\d01_省份表.csv'
data_path = r'E:\pbi\measure_date.csv'
data_path2 = r'E:\pbi\measure_date.txt'df = pd.read_csv(filepath_or_buffer=file_path_origen)def get_expression(province):expression = "CALCULATE([0001_销售金额_单位_D_],'d01_省份表'[F_04_省简称]=\"" + province + "\")"return expressiondef get_measurename(province):measure_name = province + "销售金额"return  measure_namedf["Expression"] = df['F_04_省简称'].map(get_expression)
df['MeasureName'] = df['F_04_省简称'].map(get_measurename)
df["TableName"] = 'measure_text'
df["folder"] = "text"
df["format"] = "#,0"
df.to_csv(path_or_buf=data_path, columns=['TableName','MeasureName','Expression','folder','format'], index=False,sep=',', quotechar='"', encoding="utf-8")    # 如果是汉字,必须用utf-8格式,否则会出现乱码。

df.to_csv(path_or_buf=data_path2, columns=['TableName','MeasureName','Expression','folder','format'], index=False,sep=',', quotechar='"', encoding="utf-8")

 

  • encoding="utf-8"必须是utf-8 否则后面编写度量值的时候,会出现乱码。 
  • 此时生成的csv文件打开可能是乱码,不用担心。如果想核实导出文件是否正确,可以在导出一个文件,将encoding= "gbk"。

 

 

2.2 Python 结果展示

 

  • 可以看到csv文件出现了乱码,不用担心。后面C#读取的时候,是没有问题的。
  • csv中相对于txt少了不可见的字符 双引号 "

 

 

 

三、C# 完成 度量值编写

3.1 c# 代码展示

// 读取的文件位置
string csvPath = "E:/pbi/measure_date.csv";    
var lines = System.IO.File.ReadAllLines(csvPath).Skip(1);   // Skip(1) 第一行是标题,跳过foreach (var line in lines)
{var pattern = "\".*[\\)]\"|\"[^\"]*\"|[^,]+";           // 正则表达式的规则   var matches = System.Text.RegularExpressions.Regex.Matches(line, pattern);  // 调用正则表达式if (matches.Count != 5) continue;var tableName = matches[0].Value.Trim('\"');                           var measureName = matches[1].Value.Trim('\"');  var formula = matches[2].Value.Trim('\"').Replace("\"\"", "\"");     var folder = matches[3].Value.Trim('\"'); var format = matches[4].Value.Trim('\"');var table = Model.Tables[tableName];if (table == null) continue;try{var NewMeasure =  table.AddMeasure(measureName, formula);   // 创建度量值NewMeasure.DisplayFolder = folder;                          // 度量值所在的folderNewMeasure.FormatString = format;                           // 度量的格式
}catch{ }
}
;
Model.AllMeasures.FormatDax();                                 // 格式化所有度量值的公式,不仅仅包括已经创建的度量值。

 

  • tableName 必须是已经存在的,如果不存在,可以先建一个表
  • measureName 如果不存在,则会创建,如果存在,则也会创建,名称在原有的基础上加上数字1,如果再次创建,在会是2,以此类推
  • folder 可以存在,也可以不存在,不存在则创建。
  • c# 中对 小括号) 进行转义的时候,要根据情况,确定是否使用两个 \\  。对应上面代码中的pattern 。

 

3.2 c# 结果展示

 

 

 

 

 

四、PB中展示

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/896726.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ERP如何高效管理委外加工?全流程拆解!

很多工厂都有委外加工的需求,比如某些零部件自己做成本太高、工艺太复杂,干脆交给外面的供应商去做。 问题来了,委外加工一旦管理不好,就会面临很多坑:订单交付时间不稳定,供应商老是拖 质量难以保证,返工率高 成本难控制,感觉钱花出去了但效果一般 物料进出混乱,不知…

一文全知晓,电脑上的hyper有何作用

随着虚拟现实房产展示的兴起,为购房者提供沉浸式的看房体验成为房产销售的新趋势。虚拟机技术在虚拟现实房产展示中,为房产展示软件提供稳定运行环境,实现房屋内部结构和装修的逼真呈现,让购房者足不出户即可看房。今天给大家介绍电脑上的hyper有何作用?电脑上的hyper有何…

【VMware vSphere】VMware 环境本地部署运行 DeepSeek-R1 大模型(纯 CPU)。

DeepSeek 是由中国杭州深度求索公司开发的智能 AI 助手,一个基于人工智能技术构建的虚拟助手,旨在通过自然语言处理和机器学习算法来理解并回应用户的问题与请求。它可以提供多种服务,包括但不限于信息检索、数据分析、语言翻译、知识问答以及日常生活的辅助建议等。 其实,…

Contest3897 - 计科23级算法设计与分析上机作业-01

题目链接 A.判断一个数能否被3,5,7整除 题面思路 直接模拟即可 示例代码 #include<bits/stdc++.h>using namespace std;#define ll long long //#define int ll #define pii pair<int, int> #define all(x) x.begin(),x.end() #define fer(i, m, n) for(int i = m;…

Ollama+DeepSeek+SlackBot

本文介绍了一种使用Slack聊天工具中的机器人SlackBot的API接口,实现本地化部署Ollama的DeepSeek大模型的远程通讯方案。相比于调用公网的API接口,数据隐私稍微好一点点。最终的方案应该是自建加密聊天工具+Ollama本地化部署,但是这个时间成本有点高,用户可以自行尝试。技术…

GreatSQL 8.0.32-27 GA (2025-3-10)

GreatSQL 8.0.32-27 GA (2025-3-10)版本信息发布时间:2025年3月10日版本号:8.0.32-27, Revision aa66a385910下载链接:https://gitee.com/GreatSQL/GreatSQL/releases/tag/GreatSQL-8.0.32-27用户手册:https://greatsql.cn/docs/8.0.32-27/改进提升 在GreatSQL 8.0.32-27版…

牛客题解 | 求整数的阶乘

牛客题库题解题目 题目链接 题解: 题目难度:中等难度 难点: 1.由于数据太大无法通过整数类型表示,因此用字符串存储结果 2.对于每个字符串从尾部开始进行简单的乘法,在其中考虑进位 知识点:大数相乘 思路: 1.构造multiply(int x, int res[], int res_size)函数,数组res…

OP13常见问题

1.直振与切料口的对中 问题:对中不良,导致送料不到位,对光传感器检测不到产品,报警直振缺料。解决方法: 先检查气缸自带的行程调节器有无松动,如果没有松动,通过微调振动盘机构的位置及底脚高度,实现切料口上下左右的对中。2.机器人夹爪气缸磁开线路 1.M8接头长期晃动,…

Android Studio 2022下载与安装

1、安装包 扫描下方二维码关注「软知社」,后台回复【066】三位数字即可免费获取分享链接,无广告拒绝套路; 2、安装教程解压下载安装包,双击Setup.exe安装,弹窗安装对话框点击下一步默认,点击下一步选择安装目录,建议选择C盘之外,点击下一步点击安装安装完成,点击下一…

Adobe Photoshop 2025下载与安装

‌Photoshop 2025的安装环境要求主要包括操作系统、处理器、内存、显卡、显示器分辨率和硬盘空间等方面的具体要求。‌ 操作系统要求‌Windows‌:支持Windows 10(版本21H2)或更高版本,不支持Windows的长期服务版(LTSC)。处理器要求‌Windows‌:支持64位的多核Intel或AMD…

Capture one 2023下载与安装教程

1、安装包 扫描下方二维码关注「软知社」,后台回复【061】三位数字即可免费获取分享链接,无广告拒绝套路; 2、安装教程(建议关闭杀毒软件和系统防护)解压下载安装包,双击软件安装,弹窗安装对话框选择中文,点击确定选择‘我同意。’ 点击下一步选择安装目录,建议C盘之外…

S3FT选择性自监督微调:通过智能选择训练样本提升大模型整体表现

选择性自我监督微调(Selective Self-to-Supervised Fine-Tuning,S3FT)是一种创新的大语言模型微调方法,该方法通过部署专门的语义等价性判断器来识别训练集中模型自身生成的正确响应。在微调过程中,S3FT策略性地结合这些正确响应与剩余样本的标准答案(或其释义版本)来优…