码迷,mamicode.com
首页 > 其他好文 > 详细

5个适用于初学者的有用数据分析表达式(DAX)函数

时间:2018-07-12 20:03:35      阅读:5055      评论:0      收藏:0      [点我收藏+]

标签:技术分享   存储管理   red   扫描   ef6   销售订单   大于   str   chart   

技术分享图片

 

数据分析表达式(DAX)入门可能令人生畏,但是,当你了解一些基本功能后,就可以帮助你解答许多有关数据的新见解。虽然在Power BI或Pivot Charts中创建视觉效果很容易,但我们经常希望查看特定时间范围的数据,或者应用或删除特定过滤器的数据,而这些数据是我们无法使用原始数据完成的。

如果你遇到过这个问题,那么掌握DAX的一些基本知识可以让你在模型中创建数据视图更便捷。作为Power BI和DAX的相对新手,我建议先学会这5个基本的DAX函数。

 

   报告视图

技术分享图片

技术分享图片

 

   关系视图

技术分享图片

 

1.  FILTER

FILTER函数用于返回表或表达式的子集,如下所示。

  FILTER(<table>,<filter>)

假设你想获得大于100美元的商品。我们可以使用COUNTROWS函数来计算指定表中的行数,以及FILTER函数来完成此过滤:

统计订单销售大于100 = COUNTROWS(FILTER(‘Sales‘, ‘Sales‘ [Sales] > 100))

  • 第一个参数‘Sales‘标识一个表或一个表格。

  • 第二个参数‘Sales‘[Sales]> 100,表示为表的每一行计算的布尔值或true / false表达式。

  • 在此表达式中,我们将Sales表传递给FILTER函数,并要求它返回任何大于100美元的商品。FILTER函数从不用作独立函数,但与其他函数一起使用。在上面的示例中,我们使用FILTER函数返回子集,然后计算结果。

     

     

2.  ALL

ALL函数用于返回表中的所有行或列中的值,忽略可能已应用的任何过滤器。

ALL(<table>或<column>)

  • 在上面的报告视图中,我们的报告包含多个卡片和一个不包含德国销售额的页面级过滤器。

  • 我们希望保留此过滤器,但添加一个可视化的卡片,显示已售出的商品总数,忽略放置在报告其余部分的任何过滤器。

  • 以下包含ALL函数的表达式可以帮助你实现此目的:

 

统计订单数 = COUNTROWS(ALL(‘Sales‘))

 

在这个例子中,我们将‘Sales‘表传递给ALL函数,要求它清除可能放在它上面的任何过滤器。与FILTER函数一样,ALL函数不是独立使用,而是与其他函数一起使用。

在这种情况下,我们将ALL函数与COUNTROWS函数结合使用,以获取所有销售记录的计数。ALL函数接受表或列,并清除可能已放置在它们上的任何过滤器。

 

3.  RELATED 

RELATED函数从另一个表返回一个相关值(如下所示)。

RELATED(<column>)

  • 到目前为止,我们已经使用了可以帮助你返回子集或清除表或列上的任何过滤器的函数。

  • 我们现在想要仅针对美国过滤我们的销售,但是在一个表中没有我们需要的所有数据来完成此操作。幸运的是,我们有RELATED函数,我们可以通过已建立的关系将值从一个表检索到另一个表。

  • 鉴于Sales表和SalesGeography表之间存在多对一关系,我们可以使用包含RELATED函数的以下表达式来返回仅美国的销售订单计数:

 

统计美国的订单 = COUNTROWS(FILTER(ALL(‘Sales‘), RELATED(‘SalesGeography‘[Countries]) = "美国"))

 

4.  TOTALYTD / TOTALQTD / TOTALMTD

DAX中的时间智能功能使你能够使用时间段(包括天,月,季度和年)来操纵数据,然后构建和比较这些时段的计算。

TOTALYTD(<expression>,<dates>[,<filter>][,<year_end_date>])

继续上面的例子,假设你希望看到今年迄今为止的总销售额。以下包含TOTALYTD函数的表达式可以让你轻松执行此操作: 

今年的销售订单 = TOTALYTD(SUM(‘Sales‘[Sales]), ‘Dates‘[Dates])

  • 第一个参数‘Sales‘[Sales]标识要聚合的列。这也可以是返回标量或奇异值的表达式。

  • 第二个参数“日期”[日期]是包含日期的列。时间智能功能是非常有用的功能,消除了在常用时间段内计算聚合的复杂代码的需要。

     

     

5.  CALCULATE 

CALCULATE函数计算由特定过滤器修改的上下文中的表达式。

CALCULATE(<expression>,<filter1>,<filter2> ...)

假设你现在有兴趣列出所有区域的所有销售情况。虽然你可以创建一些零碎的表达式来实现这一点,但你可以使用CALCULATE函数轻松而干净地完成相同的操作。

以下示例使用CALCULATE函数,可以完成此任务:

所有国家除以地区的销售总额 = CALCULATE(SUM(‘Sales‘[Sales]),ALL(‘SalesGeography‘))

  • 第一个参数SUM(‘Sales‘[Sales])标识要聚合的列。

  • 第二个参数ALL(‘SalesGeography‘)表示一个布尔值,用于删除可能已放置在SalesGeography表上的所有过滤器。

  • 请注意,这会忽略排除德国销售的页面级过滤器。CALCULATE函数是DAX中功能最强大,最有用的函数之一。将CALCULATE函数视为增压“IF”语句是有帮助的。一些规则适用于CALCULATE函数:过滤器参数不能引用度量,并且表达式不能使用任何扫描或返回表的函数。CALCULATE函数通常与聚合函数一起使用,尽管过滤器参数是可选的,但通常至少使用一个。

     

     

在DAX中创建一些非常复杂的查询经常出现的,但只是精通几个函数可以帮助你了解许多有趣的数据洞察。我建议查看Microsoft的DAX参考以获取更多信息。

 

Make senses to you?

技术分享图片

 

延伸阅读:

揭秘“DAX切片器”神秘的面纱

如何巧妙制作“形状地图”

一劳永逸的网页数据采集神技能,你get到了吗?

Power BI Desktop中处理Top的两种方法

Power BI数据存储管理

Power BI动态Top N 切片器 偏方拿好

Power BI 必备技能 -动态 “指标切换”

Power BI 必备技能 ― "书签"应用

解读Power BI数据安全性

抢鲜 | Power BI绽放的黑科技离我们还有多远?

 

 


长按下方二维码关注“悦策Power BI”获取更多微软Power BI干货及培课程学习,同时也欢迎各位小伙伴们转发分享哟~ ~

技术分享图片技术分享图片

5个适用于初学者的有用数据分析表达式(DAX)函数

标签:技术分享   存储管理   red   扫描   ef6   销售订单   大于   str   chart   

原文地址:https://www.cnblogs.com/yeacer/p/9300869.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!