【问题标题】:MDX query for percent of current row within tableMDX 查询表中当前行的百分比
【发布时间】:2020-04-23 13:47:01
【问题描述】:

我有一个带有 FactTicket 的 SSAS 多维数据集,它有一个 TicketsSold 度量。 立方体有很多维度。让我们称它们为日期、代理和地理。 我可以创建一个表(我们正在使用 Power BI 服务,如果它产生影响的话)并将其放入所有维度和任何维度,以及 TicketsSold 度量。 我想做的是有另一个衡量标准,可以计算当时表格中每一行占表格总数的百分比。 所以假设我有以下数据:

Date        Agent       Geo     TicketsSold
2020-04-01  Moulder     US      12
2020-04-01  Moulder     UK      4
2020-04-02  Moulder     US      10
2020-04-03  Moulder     UK      5
2020-04-01  Skully      US      16
2020-04-01  Skully      UK      12

我希望能够根据任何度量过滤我的报告,显示带有门票销售量和百分比的任何其他度量。 比如,在 2020-04-01 和 2020-04-02 过滤:

Agent       Geo     TicketsSold     %ofTicketsSold
Moulder     US      22              40.74 %
Moulder     UK      4               7.40 %
Skully      US      16              29.63 %
Skully      UK      12              22.22 %
TOTAL               54              100 %

或仅在特工 Moulder 上过滤:

Date        TicketsSold     %ofTicketsSold
2020-04-01  16              51.61 %
2020-04-02  10              32.26 %
2020-04-03  5               16.13 %
TOTAL       31              100 %

我很清楚,我可能需要某种方法来获取(对于表中的每一行)表本身的总数,然后将行自己的 TicketsSold 除以该总数。 但我似乎无法找出创建这种计算的简单方法。这是否可行,无需定义所有可能维度的元组?

谢谢!

【问题讨论】:

    标签: powerbi ssas mdx


    【解决方案1】:

    您可以使用轴功能来实现。下面是一个基于 Adventureworks 的示例 我们将在其中创建一个基于 InternetSales 的 PercentageOFTotal 列

    select 
    {[Measures].[Internet Sales Amount]}
    on columns,
    non empty  {([Product].[Category].[Category],[Product].[Subcategory].[Subcategory])}
    on rows 
    from 
    [Adventure Works]
    where [Date].[Calendar Year].&[2013]
    

    结果

    现在让我们添加我们的新列

    with member measures.PercentageOFTotal
    as round(([Measures].[Internet Sales Amount]/sum(Axis(1),[Measures].[Internet Sales Amount]))*100,2)
    select 
    {[Measures].[Internet Sales Amount],measures.PercentageOFTotal }
    on columns,
    non empty  {([Product].[Category].[Category],[Product].[Subcategory].[Subcategory])}
    on rows 
    from 
    [Adventure Works]
    where [Date].[Calendar Year].&[2013]
    

    结果

    【讨论】:

    • @Ethan1701 这有帮助吗?
    • 几乎:我创建了以下计算度量:CREATE MEMBER CURRENTCUBE.[Measures].[% of Total Tickets] AS ([Measures].[Tickets Purchased]) / Sum (Axis(1), [措施].[购买的门票]) ,FORMAT_STRING = "百分比", VISIBLE = 1 , ASSOCIATED_MEASURE_GROUP = 'FactTicket';当我在 SSMS 中浏览多维数据集时完美运行。但在 PowerBI 中我得到#ERROR! Axis 函数是从 SELECT 以外的语句的上下文中间接引用的。仅当由 SELECT 语句间接触发时,对涉及此函数的表达式的评估才会成功。
    【解决方案2】:

    如果您已经在使用 PBI:为什么不使用 DAX? DAX 查询能够解决您的问题:MEASURE Fact[Percent] = CALCULATE(SUM(Fact[Amount]), ALLSELECTED(Fact))。 "ALLSELECTED" 类似于 MDX 中的 VISUALTOTALS(),但更具动态性。

    【讨论】:

    • 这可以在 Power BI 服务中完成吗? (相对于桌面)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多