随笔分类 -  PowerBI和数据分析 / Power BI DAX

摘要:所谓模型的关系,是模型中的两个表,通过两个列建立的连接。关系的用途,是把过滤器从一个表传递到其他表。过滤器传递的方向,是关系的方向;过滤器传递的路径,是由两个表之间相关联的两列组成的。表,表之间的关联,以及关联的方向,也构成了数据模型。因此,对于一个数据模型来说,关系传播的路径是确定的,这意味着,过 阅读全文
posted @ 2025-05-27 16:10 悦光阴 阅读(61) 评论(0) 推荐(0)
摘要:原文:Nested grouping using GROUPBY vs SUMMARIZE EVALUATE ADDCOLUMNS ( VALUES ( 'Product Category'[Category] ), "Max SubCat Avg Price", CALCULATE ( MAXX 阅读全文
posted @ 2025-02-28 16:50 悦光阴 阅读(40) 评论(0) 推荐(0)
摘要:原文:Best practices using SUMMARIZE and ADDCOLUMNS 在实践中,可以用SUMMARIZE添加分组列,而用ADDCOLUMNS添加计算列。 ADDCOLUMNS( SUMMARIZE( <table>, <group by column>,... ), <c 阅读全文
posted @ 2025-02-27 23:17 悦光阴 阅读(68) 评论(0) 推荐(0)
摘要:下面列出的5个表函数,都是DAX中用于做分组聚合的函数。 ADDCOLUMNS(<table>, <name>, <expression>[, <name>, <expression>]…) SELECTCOLUMNS(<Table>, [<Name>], <Expression>, [<Name> 阅读全文
posted @ 2025-02-12 18:16 悦光阴 阅读(122) 评论(0) 推荐(0)
摘要:原文:Nested grouping using GROUPBY vs SUMMARIZE GROUPBY函数的作用是根据输入的表进行数据聚合,输入的表可以是表表达式,也就是说,GRUOPBY的参数可以是一个动态查询返回的表,也就是说GROUPBY函数可以用于嵌套聚合的情况。但是,GROUPBY 不 阅读全文
posted @ 2024-03-21 18:11 悦光阴 阅读(213) 评论(0) 推荐(0)
摘要:EARLIEST和EARLIER函数只用于行上下文中,并且主要用于计算列的行上下文中。行上下文的作用是迭代,逐行扫描表,并且不会筛选数据。 EARLIER函数用于访问外层行上下文,即使用外层行上下文,而不是最内层的行上下文检索列的值。 EARLIER(<column>, <number>) EARL 阅读全文
posted @ 2023-05-04 18:40 悦光阴 阅读(587) 评论(0) 推荐(0)
摘要:简单的说,当ALL用作表函数时,忽略应用到表上的任何过滤器,并返回数据表;当ALL用作CALCULATE和CALCULATETABLE函数中修饰器时,ALL函数从扩展表中移除已经应用的过滤上下文。 注意自动存在(auto-eixist)对ALL()函数的影响。 正常情况下,包含 ALL() 函数的 阅读全文
posted @ 2023-04-20 15:11 悦光阴 阅读(826) 评论(0) 推荐(0)
摘要:LOOKUPVALUE函数用于根据一个或多个搜索条件,从另一个表中获取一个或0个值。LOOKUPVALUE运行在行上下文中,根据当前表中的当前行,从另一个表中查找条件相等的行,查找不需要两个表之间存在关系,搜索结果也不受过滤条件的影响。当两个表之间存在关系时,考虑使用RELATED函数,因为RELA 阅读全文
posted @ 2022-12-12 10:29 悦光阴 阅读(1470) 评论(0) 推荐(0)
摘要:DAX 中的 SUMMARIZE 函数功能强大,但同时也很难使用,它可用于执行表之间的分组和连接。不幸的是,它在计算聚合值时存在一些众所周知的性能问题。除了性能之外,SUMMARIZE 的计算限制是它无法聚合在查询本身内动态计算的值。 一,SUMMARIZE函数的限制 例如,考虑以下查询,它应该为每 阅读全文
posted @ 2022-12-09 11:20 悦光阴 阅读(879) 评论(0) 推荐(0)
摘要:原文:All the secrets of SUMMARIZE 作为一个查询函数,SUMMARIZE 执行三个操作: 它可以按表本身或相关表的任何列对表进行分组; 它可以创建新列,在行上下文和过滤上下文中计算表达式; 它可以产生不同级别的小计(subtotal)。 在 SUMMARIZE 的三个主要 阅读全文
posted @ 2022-12-08 15:51 悦光阴 阅读(883) 评论(0) 推荐(0)
摘要:函数ADDCOLUMNS和SELECTCOLUMNS的功能相似,都是迭代函数,在行下文中计算表达式,并返回一个表。当需要切换到过滤器上下文时,需要用到CALCULATE函数。 从数据沿袭的角度来看: ADDCOLUMNS函数:新添加的列不具有数据沿袭的能力。 SELECTCOLUMNS函数:SELE 阅读全文
posted @ 2022-05-25 11:15 悦光阴 阅读(1762) 评论(0) 推荐(0)
摘要:自动存在是 DAX 中内置的一项技术,其唯一的目标是避免无用计算,换句话说,它是 DAX 的过滤机制使用的一种优化技术,目的是减少计算值的工作量。 例如,假设有人构建了一份按大陆和国家/地区划分的报告。 在一个数据库中,一个人可能有两大洲和五个国家: 在这些数据上,可以运行一个简单的查询,如下所示: 阅读全文
posted @ 2022-05-23 17:49 悦光阴 阅读(333) 评论(0) 推荐(0)
摘要:数据沿袭实际上存在DAX中的每个角落,它的设计如此好,以至于很多开发人员在不知情的情况使用。 DAX使用数据沿袭来维护关于列值来源的信息。数据沿袭实际上是一个标签(Tag),分配给表中的每一列,此Tag用于标识数据模型中的原始列,即列的值源自于该列。通过数据沿袭,DAX可以利用现有的关系来过滤数据模 阅读全文
posted @ 2022-05-22 19:01 悦光阴 阅读(537) 评论(0) 推荐(0)
摘要:在筛选上下文中,一列可能是由于应用了过滤器而被直接筛选,也可能是由于关系的传递,其他列被筛选而导致该列被间接筛选。因此,可以把数据模型中的筛选分为直接过滤和交叉过滤。 一,判断直接过滤和交叉过滤 直接过滤:当过滤器直接作用到表中的一列上时,该列是被直接过滤的。直接过滤是由外部的切片器和查询上下文中的 阅读全文
posted @ 2022-05-19 13:28 悦光阴 阅读(682) 评论(0) 推荐(1)
摘要:表值函数 VALUES, DISTINCT 都用于返回一列的唯一值,唯一的区别是:VALUES()会额外添加一个BLANK。当使用VALUES函数从一个关联表中获取唯一值时,如果某一个值在关系中缺失,那么VALUES()函数会返回BLANK()。 当关系代表的约束无效时,数据模型会再关系的“一”端的 阅读全文
posted @ 2022-05-18 21:40 悦光阴 阅读(2789) 评论(0) 推荐(0)
摘要:在表格数据模型中,用户可以创建关系,并可以沿着关系的方向自动进行交叉过滤。但是在计算列中,必须通过RELATED 和 RELATEDTABLE函数来检索相关联的表。当使用CALCULATE函数时,可以直接使用现有的活跃关系来进行过滤,并不需要显示调用RELATED 和 RELATEDTABLE函数来 阅读全文
posted @ 2022-05-03 21:34 悦光阴 阅读(824) 评论(0) 推荐(0)
摘要:行上下文标识当前行,仅仅用于迭代,不会筛选任何数据,也不会自动利用关系。 一,对行上下文的理解 注意:行上下文只存在于计算列或迭代函数中,计算列和迭代函数会自动创建行上下文,没有其他方法可以创建行上下文。 在当前的行上下文中,可以通过RELATED 和 RELATEDTABLE函数利用关系,以获取其 阅读全文
posted @ 2020-03-23 22:33 悦光阴 阅读(746) 评论(0) 推荐(0)
摘要:原文是:The definitive guide to ALLSELECTED ALLSELECTED 可以返回一个表,也可以删除过滤器并恢复以前的过滤器上下文。 在这两种情况下,它都是通过使用迭代器在过滤器上下文堆栈上留下的最后一个影子过滤器上下文来实现的。 一,ALLSELECTED函数的用法 阅读全文
posted @ 2020-02-25 10:28 悦光阴 阅读(716) 评论(0) 推荐(0)
摘要:在DAX中,每个表都有一个与之匹配的扩展表,表的扩展版本包含了原始表的所有列,以及从源表开始的多对一关系链中位于关系“一”端的表的所有行。 不管关系的类型如何变化,表扩展的规则是相同的: 表的扩展是单向的,只能从基准表的开始,并把任何位于关系“一”端的相关表的所有列添加到基准表中。 表的扩展不止第一 阅读全文
posted @ 2020-02-24 22:54 悦光阴 阅读(533) 评论(0) 推荐(0)
摘要:ALLSELECTED 函数有两种用法:作为表函数,或者作为CALCULATE函数的筛选调节器,这两种功能都是通过使用迭代器在过滤器上下文堆栈上留下的最后一个影子过滤器上下文来实现的。ALLSELECTED 函数是DAX中唯一一个使用影子筛选上下文的函数。 使用影子筛选上下来定义ALLSELECTE 阅读全文
posted @ 2020-02-24 22:53 悦光阴 阅读(1252) 评论(0) 推荐(1)