Powerbi实战--常用新建表代码(单位切换,日期表)

单位切换

#Model_Unit = DATATABLE("单位名称",STRING,"OrderBy_unit",INTEGER,"Value",INTEGER,    {{ "无", 1, 1 },{ "万", 2, 10000 },{ "百万", 3, 1000000 },{ "亿", 4, 100000000 }})

日期相关表

创建日期表

Model_日期表 = 
GENERATE (
CALENDARAUTO(),
VAR currdate = [Date]
VAR year = YEAR (currdate)
VAR quarter = VALUE( FORMAT( currdate, "Q" ) )
VAR quarter1 = "Q" & FORMAT( currdate, "Q" ) 
VAR month =MONTH( currdate )
VAR month1 =MONTH( currdate ) & "月"
VAR weeknum=WEEKNUM(currdate , 2 )
VAR weekday=WEEKDAY(currdate , 2 )
VAR weekname="星期" &RIGHT( FORMAT(currdate , "aaa" ) , 1 )
VAR mday=DAY(currdate )
VAR yday=VALUE( FORMAT(currdate , "y" ) )
VAR yq=year*10+quarter
VAR yq1=year&"Y"&quarter&"Q"
VAR yw=year*100+weeknum
VAR yw1=year&"Y"&weeknum&"W"
VAR ym=year*100+month
VAR ym1=year&"Y"&month&"M"
RETURN ROW (
"年度", year ,
"季序号",quarter,
"季名称",quarter1,
"月序号", month,
"月名称", month1,
"周序号", weeknum,
"周第几", weekday,
"星期几", weekname,
"年第几日", yday,
"月第几日", mday,
"年季序号", yq,
"年季名称", yq1,
"年月序号", ym,
"年月名称", ym1,
"年周序号", yw,
"年周名称", yw1
))

日期表

Model_Dates = 'Model_日期表'

创建日期区间表

Model_DatesPeriod = 
// 日期区间表,用于动态筛选日期VAR X = 'Model_Dates' // 设置主日期表VAR PeriodYearLevel = ADDCOLUMNS( SELECTCOLUMNS( X , "区间" , "Y" & FORMAT( [年度] , "0" ) , "日期" , [Date] ) , "区间类型" , "年" , "区间类型OrderBy" , 10 , "区间OrderBy" , YEAR( [日期] ) )
VAR PeriodQuarterLevel = ADDCOLUMNS( SELECTCOLUMNS( X , "区间" , "Y" & FORMAT( [年度] , "0" ) & "Q" & FORMAT( [季序号] , "0" ) , "日期" , [Date] ) , "区间类型" , "季" , "区间类型OrderBy" , 20 , "区间OrderBy" , ( YEAR( [日期] ) * 10 + VALUE( FORMAT( [日期] , "q" ) ) ) * 10 )
VAR PeriodMonthLevel = ADDCOLUMNS( SELECTCOLUMNS( X , "区间" , "Y" & FORMAT( [年度] , "0" ) & "M" & FORMAT( [月序号] , "0" ) , "日期" , [Date] ) , "区间类型" , "月" , "区间类型OrderBy" , 30 , "区间OrderBy" , (  YEAR( [日期] ) * 100 + MONTH( [日期] ) ) * 100 )
VAR PeriodWeekLevel = ADDCOLUMNS( SELECTCOLUMNS( X , "区间" , "Y" & FORMAT( [年度] , "0" ) & "W" & FORMAT( [周序号] , "0" ) , "日期" , [Date] ) , "区间类型" , "周" , "区间类型OrderBy" , 40 , "区间OrderBy" , (  YEAR( [日期] ) * 100 + WEEKNUM( [日期] , 2 ) ) * 1000 )
VAR PeriodDateLevel = ADDCOLUMNS( SELECTCOLUMNS( X , "区间" , FORMAT( [Date] , "yyyy/M/dd" ) , "日期" , [Date] ) , "区间类型" , "日" , "区间类型OrderBy" , 50 , "区间OrderBy" , [日期] )
RETURN UNION( PeriodYearLevel , PeriodQuarterLevel , PeriodMonthLevel , PeriodWeekLevel , PeriodDateLevel )

日期计算表

Model_DatesPeriod.XTD = 
VAR vToday = TODAY()
VAR vLastUpdate = [Start:Date.LastDate.All]
VAR Period_Today = VAR X   = TREATAS( { vToday } , 'Model_日期表'[Date] )VAR PX  = TREATAS( { vToday - 1 } , 'Model_日期表'[Date] )VAR TodayX = ADDCOLUMNS( LASTDATE( X ) , "区间类型" , "当日" , "截止到" , "最后一日" , "区间类型排序" , 1 )VAR TodayPX = ADDCOLUMNS( LASTDATE( PX ) , "区间类型" , "当日" , "截止到" , "上一日" , "区间类型排序" , 1 )VAR YesterdayX = ADDCOLUMNS( PREVIOUSDAY( X ) , "区间类型" , "上一日" , "截止到" , "最后一日" , "区间类型排序" , 2 )VAR YesterdayPX = ADDCOLUMNS( PREVIOUSDAY( PX ) , "区间类型" , "上一日" , "截止到" , "上一日" , "区间类型排序" , 2 )VAR WTDX = ADDCOLUMNS( DATESINPERIOD( 'Model_日期表'[Date] , X , - WEEKDAY( X , 2 ) + 1  , DAY ) , "区间类型" , "WTD" , "截止到" , "最后一日" , "区间类型排序" , 3 )VAR WTDPX = ADDCOLUMNS( DATESINPERIOD( 'Model_日期表'[Date] , PX , - WEEKDAY( PX , 2 ) + 1  , DAY ) , "区间类型" , "WTD" , "截止到" , "上一日" , "区间类型排序" , 3 )VAR MTDX = ADDCOLUMNS( DATESMTD( X ) , "区间类型" , "MTD" , "截止到" , "最后一日" , "区间类型排序" , 4 )VAR MTDPX = ADDCOLUMNS( DATESMTD( PX ) , "区间类型" , "MTD" , "截止到" , "上一日" , "区间类型排序" , 4 )VAR QTDX = ADDCOLUMNS( DATESQTD( X ) , "区间类型" , "QTD" , "截止到" , "最后一日" , "区间类型排序" , 5 )VAR QTDPX = ADDCOLUMNS( DATESQTD( PX ) , "区间类型" , "QTD" , "截止到" , "上一日" , "区间类型排序" , 5 )VAR YTDX = ADDCOLUMNS( DATESYTD( X ) , "区间类型" , "YTD" , "截止到" , "最后一日" , "区间类型排序" , 6 )VAR YTDPX = ADDCOLUMNS( DATESYTD( PX ) , "区间类型" , "YTD" , "截止到" , "上一日" , "区间类型排序" , 6 )RETURN UNION( TodayX , TodayPX , YesterdayX , YesterdayPX , WTDX , WTDPX , MTDX , MTDPX , QTDX , QTDPX , YTDX , YTDPX )
VAR Period_LastUpdate = VAR X   = TREATAS( { vLastUpdate } , 'Model_日期表'[Date] )VAR PX  = TREATAS( { vLastUpdate - 1 } , 'Model_日期表'[Date] )VAR TodayX = ADDCOLUMNS( LASTDATE( X ) , "区间类型" , "当日" , "截止到" , "最后一日" , "区间类型排序" , 1 )VAR TodayPX = ADDCOLUMNS( LASTDATE( PX ) , "区间类型" , "当日" , "截止到" , "上一日" , "区间类型排序" , 1 )VAR YesterdayX = ADDCOLUMNS( PREVIOUSDAY( X ) , "区间类型" , "上一日" , "截止到" , "最后一日" , "区间类型排序" , 2 )VAR YesterdayPX = ADDCOLUMNS( PREVIOUSDAY( PX ) , "区间类型" , "上一日" , "截止到" , "上一日" , "区间类型排序" , 2 )VAR WTDX = ADDCOLUMNS( DATESINPERIOD( 'Model_日期表'[Date] , X , - WEEKDAY( X , 2 ) + 1  , DAY ) , "区间类型" , "WTD" , "截止到" , "最后一日" , "区间类型排序" , 3 )VAR WTDPX = ADDCOLUMNS( DATESINPERIOD( 'Model_日期表'[Date] , PX , - WEEKDAY( PX , 2 ) + 1  , DAY ) , "区间类型" , "WTD" , "截止到" , "上一日" , "区间类型排序" , 3 )VAR MTDX = ADDCOLUMNS( DATESMTD( X ) , "区间类型" , "MTD" , "截止到" , "最后一日" , "区间类型排序" , 4 )VAR MTDPX = ADDCOLUMNS( DATESMTD( PX ) , "区间类型" , "MTD" , "截止到" , "上一日" , "区间类型排序" , 4 )VAR QTDX = ADDCOLUMNS( DATESQTD( X ) , "区间类型" , "QTD" , "截止到" , "最后一日" , "区间类型排序" , 5 )VAR QTDPX = ADDCOLUMNS( DATESQTD( PX ) , "区间类型" , "QTD" , "截止到" , "上一日" , "区间类型排序" , 5 )VAR YTDX = ADDCOLUMNS( DATESYTD( X ) , "区间类型" , "YTD" , "截止到" , "最后一日" , "区间类型排序" , 6 )VAR YTDPX = ADDCOLUMNS( DATESYTD( PX ) , "区间类型" , "YTD" , "截止到" , "上一日" , "区间类型排序" , 6 )RETURN UNION( TodayX , TodayPX , YesterdayX , YesterdayPX , WTDX , WTDPX , MTDX , MTDPX , QTDX , QTDPX , YTDX , YTDPX )
RETURN UNION( ADDCOLUMNS( Period_Today , "相对日期" , "现实日期" ),ADDCOLUMNS( Period_LastUpdate , "相对日期" , "刷新日期" ))

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

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

相关文章

Windows Phone 8安装包中的文件和独立存储区中的文件访问

安装包中的文件: Windows Phone 8访问安装包中的文件可以直接采用相对路径的形式,"apps/readme.txt"。例如:FileStream stream File.OpenRead("apps/readme.txt"); 也可以采用下面的方式: string installPat…

LeetCode 356. 直线镜像

文章目录1. 题目2. 解题1. 题目 在一个二维平面空间中,给你 n 个点的坐标。 问,是否能找出一条平行于 y 轴的直线,让这些点关于这条直线成镜像排布? 示例 1: 输入: [[1,1],[-1,1]] 输出: true示例 2: 输入…

使用DispatcherTimer计时器

《银光志--Silverlight 3.0开发详解与最佳实践》第3章XAML与Silverlight编程内功,通过本章的学习,相信你会对Silverlight编程模型、XAML、事件处理,以及LINQ查询语言有了一个比较全面的了解,在本章的示例中应用的都是一些基本的XA…

静物摄影用光技巧_室内人像摄影想要拍好,这3种用光技巧你了解吗?

选择靠近窗户的位置在室内可以首先考虑在靠近窗户的位置进行拍摄,因为窗户边上尤其是朝北的窗户会有非常柔和的散射光,当投射进窗户的是直射光线时,摄影者还可以拉上一层很薄的窗帘来缓解一下光线的强度,在靠近窗户的位置&#xf…

SQL基础知识:DDL、DML、DQL

DDL:数据定义语言 对数据库和数据表的管理 数据库 1、创建 create database [if not exists] databasename;2、列举 show databases;3、查看当前所在数据库 select database();4、切换 use databasename;5、删除 drop database [if exists] databasename;数…

LeetCode 660. 移除 9(9进制)

文章目录1. 题目2. 解题1. 题目 从 1 开始,移除所有包含数字 9 的所有整数,例如 9,19,29,…… 这样就获得了一个新的整数数列:1,2,3,4,5,6&…

DllImport的用法

DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息。 DllImport属性应用于方法,要求最少要提供包含入口点的dll的名称。 DllImport的定义如下: [AttributeUsage(Attr…

postman怎么导出测试用例_利用Charles抓包巧转接口自动化测试用例

在前面的文章中,也有介绍类似的工具的。例如:一键将接口请求转为测试用例介绍了开源的mitmproxy录制转化为接口测试用例,postman接口用例转化为python自动化测试用例 文章记录了如何把postman的测试用例转化为python的接口自动化的测试用例&a…

【基础知识】Sticky Bit, SUID,SGID

作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.Sticky Bit 1)作用于文件:曾经被一些老的Unix系统用来将可执行文件在第一次执行后放在swap中提高后续该程序的运行速度,现在已经过时。 2)作用于目录&a…

LeetCode 1236. 网络爬虫(BFS/DFS)

文章目录1. 题目2. 解题2.1 BFS2.2 DFS1. 题目 给定一个链接 startUrl 和一个接口 HtmlParser ,请你实现一个网络爬虫,以实现爬取同 startUrl 拥有相同 域名标签 的全部链接。该爬虫得到的全部链接可以 任何顺序 返回结果。 你的网络爬虫应当按照如下模…

启动不起来_国产开源工具:U盘启动工具Ventoy v1.0.29发布——墨涩网

Ventoy是一个制作可启动U盘的开源工具。有了Ventoy你就无需反复地格式化U盘,你只需要把ISO文件拷贝到U盘里面就可以启动了,无需其他操作。你可以一次性拷贝很多个不同类型的ISO文件,在启动时Ventoy会显示一个菜单来选择。 无差异支持Legacy B…

众多Android 开源项目再次推荐,学习不可错过

FBReaderJ FBReaderJ用于Android平台的电子书阅读器,它支持多种电子书籍格式包括:oeb、ePub和fb2。此外还支持直接读取zip、tar和gzip等压缩文档。项目地址:http://www.fbreader.org/FBReaderJ/Angle Angle是一款专为Android平台设计的&#…

LeetCode 1231. 分享巧克力(极小极大化 二分查找)

文章目录1. 题目2. 解题1. 题目 你有一大块巧克力,它由一些甜度不完全相同的小块组成。我们用数组 sweetness 来表示每一小块的甜度。 你打算和 K 名朋友一起分享这块巧克力,所以你需要将切割 K 次才能得到 K1 块,每一块都由一些 连续 的小…

筛选末位数字为1或5_看看广州示范性高中排行榜,怎么填报志愿?如何运用末位考生分数...

人们评价一所高中学校的层次通常会用两个指标:高考升学率和录取分数线,升学率又多以高优率高低为排序标准。在志愿填报期间,不少家长总希望我对学校进行比较。我试以三个维度对广州的70所示范性高中学校(校区)进行比较供大家参考。2016-2018近…

简明Python3教程 8.控制流

简介 迄今为止我们见到的所有程序总是含有一连串语句并且python忠实的顺序执行它们。 那么如何改变它们的执行顺序呢?例如你希望程序根据不同情况作出不同反应,按照当前时间分别 打印出’Good Morning’或’Good Evening’? 也许你已经猜到了&#xff0…

LeetCode 1166. 设计文件系统(哈希map)

文章目录1. 题目2. 解题1. 题目 你需要设计一个能提供下面两个函数的文件系统: create(path, value): 创建一个新的路径,并尽可能将值 value 与路径 path 关联,然后返回 True。 如果路径已经存在或者路径的父路径不存在,则返回 …

python 生成html文件浏览器_Handout库:能将python脚本转化为html展示文件

有的时候我们需要将python代码进行展示讲解,这个时候使用py文件进行讲解效果并不是最好的。如果能转化为html文件,在浏览器中展示,那就完美了。好消息是存在一个名为handout的库可以实现我们的设想。安装pip3 installU handout快速学习下面是…

转 OFBIZ webservice简介

OFBIZ webservice简介 Opentaps(OFBiz 9.04之后)中webservice用的是AXIS2,最开始自己在网上搜了好多资料,自己拿回来测试,发现都不对。后自己再找了下AXIS的资料说,那种报错很有可能是由于两个版本不对引起的,所以就决…

LeetCode 1087. 字母切换(回溯)

文章目录1. 题目2. 解题1. 题目 我们用一个特殊的字符串 S 来表示一份单词列表,之所以能展开成为一个列表,是因为这个字符串 S 中存在一个叫做「选项」的概念: 单词中的每个字母可能只有一个选项或存在多个备选项。 如果只有一个选项&…

遍历删除_面试难题:List 如何一边遍历,一边删除?

1. 新手常犯的错误可能很多新手(包括当年的我&#xff0c;哈哈)第一时间想到的写法是下面这样的&#xff1a;public static void main(String[] args) { List platformList new ArrayList<>(); platformList.add("博客园"); platformList.add("…