【问题标题】:In DAX, how do I RETURN the sum of a calculated column from a DAX Table Variable (created via ADDCOLUMN)?在 DAX 中,如何从 DAX 表变量(通过 ADDCOLUMN 创建)返回计算列的总和?
【发布时间】:2020-03-18 21:00:49
【问题描述】:

我有一个多步骤过程,将汇总基表的表变量分级为匹配的粒度。

过程(简而言之):

  • 删除选定的日期过滤器
  • 使用计算值创建过滤器
  • 然后对新的过滤表进行汇总以使粒度匹配
  • 将结果表连接起来形成一个覆盖表
  • 为此,我使用 ADDCOLUMNS 创建计算列
  • 其中,计算使用现有列、标量变量和标量成本(通过 LOOKUP)

最后,我有一个包含我需要返回的值的新列的表。我很高兴我可以在 Excel 中复制和粘贴表格内容并验证数据。它会产生正确的结果。

...但是,鉴于该值包含在表变量的新列中,它在基表中没有等效项,我被卡住了。 如何返回此表变量列的值?

(注意:DAX 确实允许我使用 SUMX 将表变量列相加为一个新变量并返回该变量,但 SUMX 将原始行上下文与它一起转发,然后将结果过滤到原来的选择的时间段会覆盖我计算的日期范围。这确实允许我在 DAX Studio 中“评估”SUM,但是当我将代码带入表格并使用它时,我会得到一个过滤结果。)

【问题讨论】:

    标签: powerbi dax ssas-tabular


    【解决方案1】:

    您可以通过 SUMX 函数访问先前定义的表变量的列变量。

    Measure = 
    var DaxTable = ADDCOLUMNS(...)
    
    var result = 
    CALCULATE(
        SUMX( DaxTable , [amount])
    )
    return
        result
    

    【讨论】:

    • 谢谢。我很感激你的回答。我确实已经弄清楚了,我在问题的“注释”中提到了这一点。当我使用 SUMX 时,返回的值保留行上下文,然后保留表示层过滤器中的原始过滤器(句点)(尽管我构建了一个表变量删除句点过滤器,并且还用 CALCULATE(所有列)包装了 SUMX。我似乎无法逃脱过滤器!:-)
    • 你的问题对我来说是一个令人愉快的难题。我并没有马上知道答案。并行我正在努力解决类似的问题stackoverflow.com/a/59052424/1903793 您使用表变量的问题原来是解决我的问题的里程碑。谢谢你的谜语,谢谢你接受答案。如果您还有其他问题,请分享示例 pbix 文件。
    • 这是我的荣幸。我回来说我错了我的用户选择的过滤器是如何“返回”的。事实证明,我的第一个基表,我认为我正在删除选定的时期,但我不是。我实际上是从一个过滤集开始的。再次感谢你。我打算就过滤器的移除提出一个全新的具体问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多