DAX:计算“没有”当前行的度量

乔纳森·斯通

我想计算“没有”当前行的 DAX 度量。这是一个基于 AdventureWorksDW2014 的示例。

evaluate
    summarize(
        'FactInternetSales'

        , 'DimProduct'[ProductSubcategoryName]

单元级度量,这些在https://docs.microsoft.com/en-us/sql/analysis-services/lesson-5-create-calculated-columns中定义

        , "Margin", [InternetTotalMargin]       -- InternetTotalMargin := SUM([Margin])
        , "Cost", [InternetTotalProductCost]    -- InternetTotalProductCost := SUM([TotalProductCost])

我定义了一个新度量,它是现有度量的复合(比率):

        , "Gross Margin", [GrossMargin]         -- GrossMargin := DIVIDE([InternetTotalMargin], [InternetTotalProductCost])

列总计:

        , "Total Margin", calculate([InternetTotalMargin], allselected('DimProduct'))
        , "Total Cost", calculate([InternetTotalProductCost], allselected('DimProduct'))

没有当前行的列总计,通过从列总计值表达式中减去单元格值表达式获得:

        , "Total Margin w/o Subcat", calculate([InternetTotalMargin], allselected('DimProduct')) - [InternetTotalMargin]
        , "Total Cost w/o Subcat", calculate([InternetTotalProductCost], allselected('DimProduct')) - [InternetTotalProductCost]

这会在应用公式之前完成所有聚合:

        , "Total Gross Margin", calculate([GrossMargin], allselected('DimProduct'))

我想计算没有“当前行”的“总毛利率”。我的第一次尝试产生了预期的结果,但取决于对 GrossMargin 背后公式的明确了解。这是“显式的”,因为我们在从分子和分母中减去“当前行”之后基本上重新实现了计算。我希望能够用我不知道公式的度量来做到这一点,或者公式可能比简单的除法更复杂。

        , "Total Gross Margin w/o Subcat (Explicit)",

            -- explicitly repeat the division formula
            divide(

                -- explicitly recompute the numerator
                calculate([InternetTotalMargin], allselected('DimProduct')) - [InternetTotalMargin]

                -- explicitly recompute the denominator
                , calculate([InternetTotalProductCost], allselected('DimProduct')) - [InternetTotalProductCost]
            )

        -- next step/where this is meant to be used:
        , "Gross Margin Impact (Explicit)", calculate([GrossMargin], allselected('DimProduct')) - divide(calculate([InternetTotalMargin], allselected('DimProduct')) - [InternetTotalMargin], calculate([InternetTotalProductCost], allselected('DimProduct')) - [InternetTotalProductCost])

我想要一个不需要计算知识的更通用的解决方案,如下所示:

        /*
        , "Gross Margin w/o Subcat", calculate([GrossMargin], allselected('DimProduct' Except Current Row)
        , "Gross Margin Impact, calculate([GrossMargin], allselected('DimProduct')) - calculate([GrossMargin], allselected('DimProduct' Except Current Row)
        */

不同的失败尝试(使用 Margin 而不是 GrossMargin 因为它更容易检查):

        , "Trial 1", calculate([InternetTotalMargin], except(all('DimProduct'), 'DimProduct')) -- incorrect value
        , "Trial 2", calculate([InternetTotalMargin], allexcept('DimProduct', 'DimProduct'[ProductSubcategoryName])) -- incorrect value
        , "Trial 3", calculate([InternetTotalMargin], allexcept('DimProduct', 'DimProduct'[ProductCategoryName])) -- incorrect value
        , "Trial 4", calculate([InternetTotalMargin], allexcept('DimProduct', 'DimProduct'[ProductKey])) -- incorrect value
        , "Trial 5", calculate([InternetTotalMargin], 'DimProduct') -- incorrect
        , "Trial 6", calculate([InternetTotalMargin], 'DimProduct'[ProductSubcategoryName] <> 'DimProduct'[ProductSubcategoryName]) -- illogical, and blank result
        -- , "Trial 7", calculate([InternetTotalMargin], 'DimProduct'[ProductSubcategoryName] <> [ProductSubcategoryName]) -- invalid syntax
        -- running out of ideas here
    )
;

这在 DAX 中甚至可能吗?

希拉 DG

不,这在 DAX 中是不可能的。如果要计算度量,则需要先定义它。你不能在这里创建占位符/插入公式/并希望最好。您可以做的是使用关键字VAR来定义您的度量,在计算时计算不同的度量并选择最适合的度量。或者,如果可能,使用调用函数通过“替换”方法定义度量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

汇总到当前行,熊猫中没有循环

来自分类Dev

没有当前行的Python中的累积总和

来自分类Dev

如何在没有当前行值的情况下对熊猫数据框进行分组并计算统计摘要(均值和标准差)?

来自分类Dev

PySpark:根据当前行值计算行数

来自分类Dev

有没有办法找到从文件中读取的当前行的行号?

来自分类Dev

有没有固定的方法可以通过Write-Host在Powershell中记录当前行?

来自分类Dev

有没有办法打印出解析文件中的当前行号?

来自分类Dev

有没有办法在 Python 上使用“openpyxl”找到迭代的当前行?

来自分类Dev

是否有R或dplyr函数来计算满足当前行条件的行

来自分类Dev

使用当前行值对 Power BI 中具有匹配列名的表执行计算?

来自分类Dev

DAX在Power Pivot 2016中计算的度量

来自分类Dev

使用AVERAGE()计算的DAX度量值的MDX语法

来自分类Dev

DAX 度量 - 仅计算本月相关的行

来自分类Dev

反转当前行中的所有单词

来自分类Dev

根据当前行和上一行的值计算当前行的col值

来自分类Dev

DAX度量以根据创建的度量计算总和和计数

来自分类Dev

熊猫计算相对于当前行的聚合值

来自分类Dev

如何计算当前行及以上行中的值数量

来自分类Dev

在 SQL 中计算 Avg 不包括当前行

来自分类Dev

MySQL - 如何计算当前行之前出现的次数

来自分类Dev

NotesXspDocument.getValue(“ computedFieldName”)没有返回当前的计算值

来自分类Dev

根据当前显示的尺寸计算得出的度量

来自分类Dev

在Excel(DAX)中查找相对于当前行值的行

来自分类Dev

该计算机当前没有检测到的操作系统(没有UEFI)

来自分类Dev

Vim:删除当前行以外的所有行

来自分类Dev

平均度量/从度量DAX创建表

来自分类Dev

如何创建DAX度量以计算累积总和,并且还响应Power BI中的评估上下文

来自分类Dev

DAX中的运行/累积总计,仅使用度量,不计算列

来自分类Dev

表格2016-DAX度量:如何引用计算别名进行聚合

Related 相关文章

  1. 1

    汇总到当前行,熊猫中没有循环

  2. 2

    没有当前行的Python中的累积总和

  3. 3

    如何在没有当前行值的情况下对熊猫数据框进行分组并计算统计摘要(均值和标准差)?

  4. 4

    PySpark:根据当前行值计算行数

  5. 5

    有没有办法找到从文件中读取的当前行的行号?

  6. 6

    有没有固定的方法可以通过Write-Host在Powershell中记录当前行?

  7. 7

    有没有办法打印出解析文件中的当前行号?

  8. 8

    有没有办法在 Python 上使用“openpyxl”找到迭代的当前行?

  9. 9

    是否有R或dplyr函数来计算满足当前行条件的行

  10. 10

    使用当前行值对 Power BI 中具有匹配列名的表执行计算?

  11. 11

    DAX在Power Pivot 2016中计算的度量

  12. 12

    使用AVERAGE()计算的DAX度量值的MDX语法

  13. 13

    DAX 度量 - 仅计算本月相关的行

  14. 14

    反转当前行中的所有单词

  15. 15

    根据当前行和上一行的值计算当前行的col值

  16. 16

    DAX度量以根据创建的度量计算总和和计数

  17. 17

    熊猫计算相对于当前行的聚合值

  18. 18

    如何计算当前行及以上行中的值数量

  19. 19

    在 SQL 中计算 Avg 不包括当前行

  20. 20

    MySQL - 如何计算当前行之前出现的次数

  21. 21

    NotesXspDocument.getValue(“ computedFieldName”)没有返回当前的计算值

  22. 22

    根据当前显示的尺寸计算得出的度量

  23. 23

    在Excel(DAX)中查找相对于当前行值的行

  24. 24

    该计算机当前没有检测到的操作系统(没有UEFI)

  25. 25

    Vim:删除当前行以外的所有行

  26. 26

    平均度量/从度量DAX创建表

  27. 27

    如何创建DAX度量以计算累积总和,并且还响应Power BI中的评估上下文

  28. 28

    DAX中的运行/累积总计,仅使用度量,不计算列

  29. 29

    表格2016-DAX度量:如何引用计算别名进行聚合

热门标签

归档