因工作需要,最近一直在学习PowerBI,记录一些学习收获。
常用的度量值
统计行数
=COUNTA(字段名) #非空
=COUNT(字段名) #所有
统计某列为值为Y的行数:
=CALCULATE(COUNTROWS('Approve'),'Approve'[IS_SINGLE]="Y",筛选2...)
计算筛选后数据的均值:
=AVERAGEX(FILTER(User,User[Code]<>"SMRTCLM"&&Approve[折算]>10),Approve[折算])
获取前一天的数并计算行数:
=CALCULATE(COUNTROWS(表名),DATEDIFF(IF(日期字段<>0,
DATE(LEFT(日期字段,4),MID(日期字段,5,2),MID(日期字段,7,2)),
"2020-02-01"),NOW(),DAY)=1)
按某列的值筛选,求合计值(影响合计值)
=CALCULATE(SUMX(User,User[折算小时数]/7.5),User[Code]<>"SMRTCLM")
统计某列为值为Y的合计
=CALCULATE(COUNTROWS('Approve'),'Approve'[IS_SINGLE]="Y")
添加条件的统计
=AVERAGEX(FILTER(User,User[Code]<>"SMRTCLM"&&User[Code]<>"ISERVIC"&&Approve[折算]>10),Approve[折算])
新建表连接两个查询 a, b
左外连接:FinalTable = NATURALLEFTOUTERJOIN(a,b)
内连接:FinalTable = NATURALINNERJOIN(a,b)
Casewhen
SWITCH (true(), 条件1,结果1…)
=CALCULATE([销售总额],FILTER(ALL('门店城市'),[销售总额]>20000000))
报表中显示数据刷新时间
新建空报表,插入:
DateTimeZone.SwitchZone(DateTimeZone.FixedUtcNow(),8)
DateTime.LocalNow()
- 在本地刷新后发布到Power BI Service,返回的是本地电脑的时间;
- 在云端设置计划刷新(不涉及网关),返回的是云端服务器所在国家的时间;
- 基于本地数据源的计划刷新(涉及网关),返回网关系统的时间。
区别:DateTimeZone.SwitchZone(DateTimeZone.FixedUtcNow(),8),通过加减时差来避免时区差异产生的问题。这种方法也有弊端,即实行冬夏令时的国家地区,时差是不固定的,每年需要调整2次。
通过这个函数可以生成一个表,该表存储数据模型每次刷新时的当前时间。
日期表生成
calender("2021/01/01","2021/01/31")