132_Power BI之建模必备要素&Power Query之数据表字段名称管理
博客:www.jiaopengzi.com
一、背景
近段时间比较忙,也没有看到很好的DAX素材,很久没有更新文章了,刚好有时间就来凑个热闹。
今天主题是Power BI建模分析的一些小技巧。
1、Power Query之数据表字段名称管理
2、Power BI建模必备要素
二、正文
1、Power Query之数据表字段名称管理
前提:标准数据库里面的数据用sql来管理,在这里不做讨论。
在诸多CSV格式的数据源中,经常会有很多字段的数据,如图:

在这么多的字段中,我们经常会只需要一部分,如上图中绿色框线中的数据。

如果表特别多的时候,重复操作就会把脑壳整炸,
又如果有的字段需要增加或者删除,那又是一通操作,非常不利于管理。
我们经过思考,从 数据获取 => 选择字段 => 重命名 => 更改类型 都封装在一个pq函数中,通过外部的Excel表格来管理数据源。这样就方便多了(数据的筛选等其他清洗动作同理)。

如下在EXCEL中管理表格(演示)
[video width="1208" height="924" mp4="https://jiaopengzi.com/wp-content/uploads/2020/03/132_4.mp4"][/video]
自定义函数Fxtable。
/*
必备条件
1、csv格式数据源,(同理可以封装excel格式数据);
2、《01名称管理》表格的设计如示例;
3、建立自己的文件管理路径
4、参数说明
folders:对应的Path下的子文件夹管理路径,
tablename:csv文件的名称,
removerows:csv文件顶端移除行数,必有标题的,根据需要移除。
*/
(folders as text,tablename as text,removerows as number ) as table =>
let
名称管理表=Excel.Workbook(File.Contents(Path&"\01辅助表\01名称管理.xlsx"), null, true){[Item="名称管理",Kind="Table"]}[Data],
类型源 = {type text,type number,Int32.Type,type date},
列 = Table.RowCount(Table.SelectRows(名称管理表, each ([表名] = tablename))),
名称表 = Table.SelectRows(名称管理表, each ([表名] = tablename) and ([统一名称] <> null)),
需求列 = List.Transform(名称表[ID],each "Column"&Text.From()),
新名称 = List.Zip({需求列,名称表[统一名称]}),
新类型 = List.Zip({名称表[统一名称],List.Transform(名称表[类型],each 类型源{})}),
数据源=Csv.Document(File.Contents(Path&""&folders&""&tablename&".csv"),[Delimiter=",", Columns=列, Encoding=936, QuoteStyle=QuoteStyle.None]),
结果 = Table.TransformColumnTypes(Table.RenameColumns(Table.Skip(Table.SelectColumns(数据源,需求列),removerows),新名称),新类型)
in
结果
2、Power BI建模必备要素
建立Power BI模型时,除业务本身数据外必备的几个要素。

(1)Path
Path参数,作为整个模型文件管理的根目录设置,对模型移动管理很重要。
(2)Measure
Mersure表,作为度量管理的基础要素,笔者更习惯pq来写这个表,更简洁舒服。
注意:需要先用temp把Measure表加载到模型,写入度量后,把temp去掉。
当然也可以用dax来写的 Mersur= {BLANK()} 。

(3)Calendar
Calendar日期表,不用多说建模必备的。
let
date_start=#date(2018, 1, 1),//开始日期
date_end=#date(2020, 12, 31),//结束日期
count=Duration.Days(date_end-date_start),//间隔天数
calendar = #table
(
type table
[
dates=date
,year=Int64.Type
,month=Int64.Type
,day=Int64.Type
,year_m=Int64.Type
,quarter=Int64.Type
,year_q=Int64.Type
,weeknumber=Int64.Type
,weekday=Int64.Type
,weekus=text
,weekcn=text
,weekcna=text
,M=text
,YM=text
,Q=text
,YQ=text]
,List.Transform({0..count},(n)=>
let d=Date.AddDays(date_start,n) in
{
d//日期
,Date.Year(d)//年
,Date.Month(d)//月
,Date.Day(d)//天
,Date.Year(d)*100+Date.Month(d)//年月组合
,Date.QuarterOfYear(d)//季度
,Date.Year(d)*100+Date.QuarterOfYear(d)//年季度组合
,Date.WeekOfYear(d,1)//周一开始的一年第几周
,Date.DayOfWeek(d,1)//星期几
,Date.DayOfWeekName(d, "en-US")//星期几英文
,Date.DayOfWeekName(d, "zh-CN")//星期几中文
,Text.End(Date.DayOfWeekName(d, "zh-CN"),1)//星期几简写
,"M"&Date.ToText(d,"MM")
,Date.ToText(d,"Yyy")&"M"&Date.ToText(d,"MM")
,"Q"&Number.ToText(Date.QuarterOfYear(d))
,Date.ToText(d,"Yyy")&"Q"&Number.ToText(Date.QuarterOfYear(d))
}
)
)
in
calendar

(4)Unit
Unit表,根据业务需求,提前预设单位,为动态使用单位准备,符合中国式报表的单位设置。

[video width="1240" height="924" mp4="https://jiaopengzi.com/wp-content/uploads/2020/03/132_9.mp4"][/video]
(5)RefreshTime
RefreshTime刷新时间,动态记录Power BI项目中数据刷新的时间节点。不会有人再问你数据是什么时候的了。
小技巧:↻ 刷新符号
本地刷新可以去掉"+#duration(0,8,0,0)"这一串,如果微软云端刷新,就要根据业务本身所在时区来调整。

[video width="1252" height="872" mp4="https://jiaopengzi.com/wp-content/uploads/2020/03/132_11.mp4"][/video]
by 焦棚子
132_Power BI之建模必备要素&Power Query之数据表字段名称管理的更多相关文章
- 数据可视化之PowerQuery篇(九)巧用Power Query,Excel也可以轻松管理文档
https://zhuanlan.zhihu.com/p/111674088 来自知乎一个朋友的问题,如何在Excel中批量插入文件的超链接,以便在Excel中对文档进行有序的目录管理? 这个问题的 ...
- Power Query 合并数据
1 导入数据 合并数据 筛选字段 关闭并上载
- Power BI for Office 365(二)Power Query
在上一篇中我们看到了Power BI在移动端的支持,从这一篇起降依次介绍Power BI中的各个功能组件,此篇讲通过一个故事来介绍如何在Power Query中获取并且组织数据. 在这个系列中,我们将 ...
- 152-技巧-Power Query 快速合并文件夹中表格之自定义函数 TableXlsxCsv
152-技巧-Power Query 快速合并文件夹中表格之自定义函数 TableXlsxCsv 附件下载地址:https://jiaopengzi.com/2602.html 一.背景 在我们使用 ...
- SQL Server 2014 BI新特性(三)Power Query和Power Map功能预览
Power Query和Power Map是微软前不久在WPC上发布的Power BI中新的针对Excel的功能.借助这两样功能,自助式BI将更方便你发现和处理数据并且丰富数据的可视化功能. Powe ...
- 2019微软Power BI 每月功能更新系列——Power BI 4月版本功能完整解读
Power BI4月份的更新对整个产品进行了重大更新.此版本增加了基于DAX表达式定义视觉效果标题和按钮URL的功能.本月Power BI也新增了许多新的连接器,现在可以使用几种预览连接器,包括Pow ...
- SQL点滴17—使用数据库引擎存储过程,系统视图查询,DBA,BI开发人员必备基础知识
原文:SQL点滴17-使用数据库引擎存储过程,系统视图查询,DBA,BI开发人员必备基础知识 在开发过程中会遇到需要弄清楚这个数据库什么时候建的,这个数据库中有多少表,这个存储过程长的什么样子等等信息 ...
- Power Query Advanced Editor键盘快捷键
当你点击阅读这篇文章,第一眼看到这首图,是不是不太明白?实际上是小悦对Power BI 功能的12月更新的部分功能很有兴趣,所以今天想用这张张首图作为例,延伸测试键盘快捷键的简单应用,还真别说,确实还 ...
- Power Query系列 - 排序Ranking
Power Query系列 - 排序Ranking 难度: ★★☆☆☆(1星) 适用范围: ★★★☆☆(3星) 概况: 在数据分析中,我们常常需要对数据进行排序,同时我们想知道某个项目或者产品的排名, ...
随机推荐
- LQR (线性二次型调节器)的直观推导及简单应用
转自:https://blog.csdn.net/heyijia0327/article/details/39270597 本文主要介绍LQR的直观推导,说明LQR目标函数J选择的直观含义以及简单介绍 ...
- HTML5摇一摇(上)—如何判断设备摇动
刚刚过去的一年里基于微信的H5营销可谓是十分火爆,通过转发朋友圈带来的病毒式传播效果相信大家都不太陌生吧,刚好最近农历新年将至,我就拿一个"摇签"的小例子来谈一谈HTML5中如何调 ...
- putty 远程登录ubuntu的方法
首先,要确定linux的ssh服务已经开启了: 首先要确定开启了ssh-server: 安装:sudo apt-get install openssh-server 安装:su ...
- ES6-11学习笔记--函数的参数
参数的默认值 与解构赋值结合 length属性 作用域 函数的name属性 ES5设置函数参数默认值: function foo(x, y) { y = y || 'world'; console ...
- 第二次课堂练习-连接hbase数据库-页面展示
图片来源:中国知网 页面来源:中国科学院文献情报中心-科技查新平台 如有侵权,请评论留言
- java栈stack和堆heap的工作原理,用途及区别?举例说明
java堆和栈的区别[新手可忽略不影响继续学习] Java中内存分成两种:一种是栈stack,一种是堆heap.函数中的一些基本类型的变量(int, float)和对象的引用变量(reference) ...
- uniapp最简单的上拉加载更多demo
data() { return { list:[],//数据列表 page: 1,//页数 } }, //请求一下数据(进入页面请求一次) onLoad() { this.getnewsList(th ...
- css设置图片根据最大边自适应
给新手的福利,还是记一下吧.......很简单 <div> <img src="1.jpg" alt=""> </div> ...
- EMS导入导出邮箱
Exchange支持EMS命令导出用户邮箱内容作为备份的功能.当重要用户的邮件误删除后,可以通过导出的邮箱恢复数据. 1.授权管理用户 Exchange默认安装完成后,内置"Mailbox ...
- 关于页面中css某些情况下出现不知原因的隔断解决办法
第一种方法:body{margin:0px;padding:0px position:absolute; top:0px;left:0px;} html{ width:100%; overflow-x ...