【问题标题】:Calculate % based on a combination of count and stored values - Power BI根据计数和存储值的组合计算百分比 - Power BI
【发布时间】:2019-04-03 17:34:15
【问题描述】:

我有一个如下所示的基本表:

 DayNo. Customer    AgentsInvolved  CallID
   0      AAA              1        1858
   0      AAA              3        1859
   2      AAA              1        1860
   0      BBB              2        1862
   0      CCC              1        1863
   0      DDD              3        1864
   9      DDD              1        1865
   9      DDD              4        1866

我需要能够找到只联系过一次并且只与 1 个代理交谈过的客户的百分比。所以从上面的例子中,在 4 个不同的客户中,只有 CCC 客户属于这一类(1 个呼叫,1 个 AgentInvolved)

所以期望的结果是:1/4 或 25%

如何创建 Power BI 度量来执行此计算?

【问题讨论】:

    标签: filter powerbi dax measure


    【解决方案1】:
    Desired Result =
           VAR summarizetable = 
               SUMMARIZECOLUMNS (
                   'table'[AgentsInvolved],
                   'table'[DayNo.],
                   'table'[Customer],
                   "Calls", COUNT ( 'table'[CallID] )
            )
           )
        RETURN
    COUNTROWS (
        FILTER ( summarizetable, [Calls] = 1 && 'table'[AgentsInvolved] = 1 && 'table'[DayNo.] = 0 )
    ) / DISTINCTCOUNT ( 'table'[Customer])
    

    【讨论】:

      【解决方案2】:

      这是另一种方法:

      Measure = 
      SUMX(
          VALUES(Table2[Customer]),
          CALCULATE(
              IF(
                  DISTINCTCOUNT(Table2[CallID]) = 1 &&
                    SUM(Table2[AgentsInvolved]) = 1,
                  1,
                  0
              ),
          Table2[DayNo.] = 0
          )
      ) /
      DISTINCTCOUNT(Table2[Customer])
      

      如果您还想排除分母中的 0 天行,请将最后一行替换为

      CALCULATE(DISTINCTCOUNT(Table2[Customer]), Table2[DayNo.] = 0)
      

      【讨论】:

      • 当我扩展到超过 300000 行和超过 100000 个唯一客户时,这实际上并没有正确显示。似乎被 -2000 个独立客户关闭
      【解决方案3】:

      试试这个措施:

      Desired Result =
      VAR summarizetable =
          SUMMARIZECOLUMNS (
              'table'[Customer],
              "Calls", COUNT ( 'table'[CallID] ),
              "Agents", SUM ( 'table'[AgentsInvolved] ),
              "Day", SUM ( 'table'[DayNo.] )
          )
      RETURN
          COUNTROWS (
              FILTER ( summarizetable, [Calls] = 1 && [Agents] = 1 && [Day] = 0 )
          )
              / COUNTROWS ( summarizetable )
      

      VAR summarizetable 中动态创建的汇总表如下所示:

      【讨论】:

      • 非常好,这是 99%。如何过滤汇总表以仅包含 DayNo. = 0?
      • @MarcoVos 不错的解决方案!
      • 其实你是对的Marco,很抱歉造成混乱
      猜你喜欢
      • 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
      相关资源
      最近更新 更多