[已解决] 如何将虚拟表中的字段写入度量值

  [复制链接]
查看270227 | 回复188 | 2021-2-19 01:13:45 | 显示全部楼层 |阅读模式
有以下场景:
每笔订单只能享受一次积分优惠,但订单事实表中订单ID有重复(一笔订单对应多条记录)。
用SUMMARIZECOLUMNS新建表,可以保证订单ID和积分优惠一对一。
  1. SUMMARIZECOLUMNS(

  2.   '订单'[订单ID],

  3.   '订单'[积分优惠]

  4. )
复制代码



现在的问题:



能否将虚拟表中的积分优惠通过DAX返回?

望各位大佬指点。

谢谢。
11223112038081.png 11223112038082.png
11223112038085.zip (632.21 KB, 下载次数: 0)
回复

使用道具 举报

Cici | 2021-2-19 01:20:45 | 显示全部楼层
度量值可以写为
  1. Discount = SUMX ( SUMMARIZE ( '订单', '订单'[订单ID], '订单'[积分优惠] ), '订单'[积分优惠] )
复制代码
另外,度量值也可以写为
  1. TEST = SUMX( SUMMARIZECOLUMNS( '订单'[订单ID], '订单'[积分优惠] ), '订单'[积分优惠] )
复制代码
但TEST不能用在含筛选上下文的TABLE/MATRIX里,却可以用在TABLE+SLICER的组合里,找了挺久也没看到有解释其中原理的。

11223112038083.png
回复

使用道具 举报

young_man | 2021-2-19 01:24:45 | 显示全部楼层
度量值可以写为
另外,度量值也可以写为
但TEST不能用在含筛选上下文的TABLE/MATRIX里,却可以用在TABLE+ ...


感谢ThxAlot大侠的详细指点。

测试了下,SumX + Summarize可以实现,但SumX + SummarizeColumns果然不支持上下文。

所以,是否意味着,SumX + AddColumns也不支持上下文?
11223112038084.png
回复

使用道具 举报

HONDA | 2021-2-19 01:31:45 | 显示全部楼层
感谢ThxAlot大侠的详细指点。

测试了下,SumX + Summarize可以实现,但SumX + SummarizeColumns果然不 ...


按照Italians的说法,这种写法
  1. Measure =
复制代码
在性能上会有问题,所以一般写成
  1. ADDCOLUMNS (

  2.   SUMMARIZE ( tbl, tbl[col1], tbl[col2], tbl[col3] ),

  3.   "virtual col1", [measure1],

  4.   "virtual col2", [measure2]

  5. )
复制代码
SUMMARIZECOLUMNS作为SUMMARIZE的升级版,解决了前一种写法在性能上的问题。https://www.sqlbi.com/articles/introducing-summarizecolumns/
回复

使用道具 举报

老猫 | 2021-5-6 22:32:49 | 显示全部楼层
前排,哇咔咔
回复

使用道具 举报

dgfjn | 2021-5-14 21:16:50 | 显示全部楼层
众里寻他千百度,蓦然回首在这里!
回复

使用道具 举报

枫树 | 2021-8-30 12:42:55 | 显示全部楼层
我是个凑数的。。。
回复

使用道具 举报

MetalGear | 2021-9-2 12:39:45 | 显示全部楼层
占位编辑
回复

使用道具 举报

zyyhzz0123 | 2021-9-11 15:22:19 | 显示全部楼层
这个视频很不错,推荐一下
回复

使用道具 举报

Salooloo | 2021-9-26 08:56:19 | 显示全部楼层
好帖必须得顶起
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则