PBI基本函数+日期函数+智能日期函数

目录

一、 基本的一些函数

1、 RELATED 从多端出发,按关系取一端的值(返回列值)

2、RELATEDTABLE  从一端出发,按关系取多端的值(返回表)

 3、COUNT(不去重)与DISTINCTCOUNT(去重)

二、日期函数

1、date函数  转换一个指定日期

2、year/month/day/hour/minute/second   返回一个日期指定部分

3、DATEVALUE    转换文本到日期

4、edate日期加减月份

5、eomonth返回指定日期月份最后一天日期

6、now返回当前日期与时间

7、time返回时间

8、today返回今天的日期

9、weekday 返回日期是所在周的第几天

10、weeknum  返回日期是所在年的第几周

11、yearfra返回两个日期之间   天数/年数(365)(精确到小数)

三、智能日期函数

1、CALENDAR    创建日期表

2、CALENDARAUTO    创建日期表

3、FORMAT 函数打印格式

4、DATEADD    求同期

5、DATESYTD、DATESMTD 求YTD、MTD

6、PARALLELPERIOD  求上年全部,上月全部

7、divide 安全除法

8、ADDCOLUMNS 函数 为指定表添加列

9、IF函数

10、SWITCH函数

11、ISBLANK、BLANK

12、LEFT(),MID(),SEARCH()   字符串提取

 13、UNICHAR  返回给定数字代表的 Unicode 字符

14、REPT  按给定次数重复文本


一、 基本的一些函数

1、 RELATED 从多端出发,按关系取一端的值(返回列值)

PBI基本函数+日期函数+智能日期函数_第1张图片

退货状态 = RELATED('退货'[退回] )

 PBI基本函数+日期函数+智能日期函数_第2张图片

2、RELATEDTABLE  从一端出发,按关系取多端的值(返回表)

可以用 COUNTROWS 统计有几条对应的订单表的数据

对应订单表数据有几条 = COUNTROWS( (RELATEDTABLE('订单') ))

PBI基本函数+日期函数+智能日期函数_第3张图片

 3、COUNT(不去重)与DISTINCTCOUNT(去重)

订单id不去重 = COUNT('订单'[订单ID] )
订单id去重 = DISTINCTCOUNT('订单'[订单ID] )

二、日期函数

1、date函数  转换一个指定日期

date转换一个指定日期 = date(2021,01,01 )

2、year/month/day/hour/minute/second   返回一个日期指定部分

day取日期的日 = DAY('日期'[日期])

3、DATEVALUE    转换文本到日期

DATEVALUE转换文本到日期 = DATEVALUE("2020-01-01")

4、edate日期加减月份

edate日期加减月份 = EDATE("2020-05-01",-4)

5、eomonth返回指定日期月份最后一天日期

eomonth返回指定日期月份最后一天日期 = EOMONTH("2022-04-08",-1) 

6、now返回当前日期与时间

now返回当前日期与时间 = NOW()

7、time返回时间

time返回时间 = TIME(12,56,61)

8、today返回今天的日期

today返回今天的日期 = TODAY()

9、weekday 返回日期是所在周的第几天

语法=
WEEKDAY(<日期>, <返回类型>)

返回类型选项有1、2、3。

1代表周日是本周的第一天,周六为最后一天;

2代表周一是本周的第一天,周日为最后一天;

3代表周一是本周的第一天,周日为最后一天。与2类型返回的区别是在2中,返回结果是1-7。3类型中,返回结果是0-6。

weekday = WEEKDAY("2022-04-08",2 )

10、weeknum  返回日期是所在年的第几周

语法=
WEEKNUM(<日期>, <返回类型>)

返回类型选项有1、2。

1代表每周的第一天是周日。

2代表每周的第一天是周一。

weeknum = WEEKNUM("2022-04-08",2)

11、yearfra返回两个日期之间   天数/年数(365)(精确到小数)

yearfra = YEARFRAC("2000-02-12",today())

三、智能日期函数

1、CALENDAR    创建日期表

CALENDAR创建日期表 = CALENDAR("2011-01-01","2016-01-01")

2、CALENDARAUTO    创建日期表

CALENDARAUTO创建日期表 = CALENDARAUTO()

3、FORMAT 函数打印格式

format打印YM = FORMAT('日期'[日期],"YYYYMM") 

4、DATEADD    求同期

前一天订单销售额 = CALCULATE([订单总销售额],DATEADD('日期'[日期],-1,DAY))
上月同期销售额 = CALCULATE([订单总销售额],DATEADD('日期'[日期],-1,MONTH))
上年同期销售额 = CALCULATE([订单总销售额],DATEADD('日期'[日期],-1,YEAR))

5、DATESYTD、DATESMTD 求YTD、MTD

YTD = CALCULATE([订单总销售额],DATESYTD('日期'[日期]))
MTD = CALCULATE([订单总销售额],DATESMTD('日期'[日期]))

6、PARALLELPERIOD  求上年全部,上月全部

上年全部销售额 = CALCULATE([订单总销售额] ,PARALLELPERIOD('日期'[日期],-1,YEAR))
上月全部销售额 = CALCULATE([订单总销售额] ,PARALLELPERIOD('日期'[日期],-1,MONTH))

7、divide 安全除法

语法 =
   divide(分子,分母,[可选项])

若不指定可选项,当分母为0时,返回空。

也可指定可选项,当分母为空时返回指定值。

8、ADDCOLUMNS 函数 为指定表添加列

语法

ADDCOLUMNS 函数  第一个参数是一个返回的表
第二个参数和第三个参数确定添加的第一例的列名和列值
第四个参数和第五个参数确定添加的第2例的列名和列值
以此类推
Calendar = ADDCOLUMNS(CALENDARAUTO(),
    "YEAR",FORMAT([Date],"YYYY"),
    "MONRH",FORMAT([Date],"MM"),
    "Quetar","Q"&FORMAT(''[Date],"Q"),
    "MONTH",FORMAT([Date],"MM"),
    "WEEK",FORMAT([Date],"WW"),
    "WK","WK"&" "&FORMAT(''[Date],"WW-YYYY"))

9、IF函数

语法:if(条件,真的结果,假的结果)
1.省略第三参数,不符合条件时返回空值
Price Group =
IF(
    'Product'[List Price] < 500,
    "Low"
)

2.不省略第三参数
Price Group =
IF(
    'Product'[List Price] < 500,
    "Low",
    "High"
)

3.嵌套if函数
Price Group =
IF(
    'Product'[List Price] < 500,
    "Low",
    IF(
        'Product'[List Price] < 1500,
        "Medium",
        "High"
    )
)

10、SWITCH函数

语法:SWITCH(表达式,条件1,结果1,条件2,结果2,....)
参数:
第一参数:返回单个标量值的任何 DAX 表达式,其中,表达式将被计算多次(针对每行/上下文)
第二参数:与表达式的结果相匹配的常量值
第三参数:当表达式的结果与对应的值匹配时,要进行计算的任何标量表达式
第四参数:如果表达式的结果与任何值参数都不匹配,要进行计算的任何标量表达式
备注:
所有满足表达式的返回结果必须为同一数据类型
当存在多条件判断时,SWITCH函数比IF函数更加简洁明了
1.值相等
SWITCH([Month],
	1,“Jan”,
	2,"Feb",
	3,"Mar",
	4,"Apr",
	"Other")

2.其他条件判断
SWITCH(TRUE(),
	[Month]<=3,"一季",
	[Month]<=6,"二季",
	[Month]<=9,"三季",
	"四季")

11、ISBLANK、BLANK

ISBLANK(column) --判断该列中某个值是否为空
语法

BLANK ( )

返回值

标量 一个任意类型的值,空值没有数据类型。

 

aaa=
    IF( ISBLANK ([PreviousYearTotalSales]),
BLANK(),
( [Total Sales]-[PreviousYearTotalSales] ) / [PreviousYearTotalSales]
)

12、LEFT(),MID(),SEARCH()   字符串提取

left

语法= LEFT ( <文本>, [<字符数>] )

例子 
AAA =LEFT('New Products'[ProductCode],2)

mid
语法= MID ( <文本>, <起始位置>, <字符数> )

例子
MID("abcde",2,3)) = "bcd"
MID('Reseller'[ResellerName],1,5))
SEARCH 

语法 =
        SEARCH ( <待查找内容>, <查找范围>, [<起始位置>], [<备选结果>] )

例子
    以下公式查找字符“-”在列中的位置,并在找不到该字符串的情况下返回 -1
    SEARCH("-",[PostalCode],,-1)

 

 13、UNICHAR  返回给定数字代表的 Unicode 字符

 

语法=
    UNICHAR ( <数字> )

例子

=UNICHAR(9733) //返回由 Unicode 数字 9733 表示的字符 ★
=UNICHAR(128504) //返回由 Unicode 数字 1285046 表示的字符 √
=UNICHAR(128500) //返回由 Unicode 数字 1285000 表示的字符 ×

14、REPT  按给定次数重复文本

语法 =
        REPT ( <文本>, <重复次数> )


例子
    REPT("85",3) = "858585"


备注
   如果重复次数为 0,REPT 返回空白 。
   如果重复次数 不为整数,则截断该值 。 

你可能感兴趣的:(BI前端学习--power,bi,和帆软,前端)