DAX COUNT / COUNTA函数

时间:2017-08-24 15:03:57

标签: dax

我查看过有关COUNTCOUNTA的许多帖子,但我似乎无法弄清楚如何正确使用它。

我是DAX的新手,正在学习我的方法。我试图查明这一点,并且已经找到了一些方法,但我并不确切。我想我对如何应用过滤器很困惑。

以下是这种情况: 用于在报告中生成数据的四个单独查询;但只需要使用两个DAX函数(ProductsDisplay)。 我需要过滤三列,如下所示:

  • 客户(DisplayProducts查询;可以执行任何操作)
  • 品牌(Products查询)
  • 位置(Display查询)

我想根据数据是否唯一来计算列数。 这是一个例子:

  • 客户:Big Box Buy;
  • 项目: Lego Big Blocks;
  • 品牌:乐高;
  • 位置:玩具;

BREAK

  • 客户: Big Box Buy;
  • 项目:乐高星球大战;
  • 品牌:乐高;
  • 位置:玩具;

BREAK

  • 客户: Big Box Buy;
  • 项目: Surface Pro;
  • 品牌: Microsoft;
  • 位置:电子产品;

BREAK

  • 客户:角落里的小商店;
  • 项目:红色自行车;
  • 品牌: Trek;
  • 位置:机架;

在此示例中,无论项目是否不同,我们都只想查看客户,品牌和位置。我们在前两个记录中看到,客户是" Big Box Buy"而品牌是" Lego"而位置是"玩具"。这出现了两次,但我想将其统计为" 1"。下一个" Big Box Buy"商店有品牌"微软"而位置是"电子"。它只出现一次,因此非常重要的是" 1"无论如何。这意味着" Big Box Buy"有两个单独的条目,两者都计数为1.最后还有#34;角落里的小商店"它只出现一次,只计算一次。

"骨架"我所拥有的代码基本上只是为了看看我是否可以得到一个可以工作的计数,我可以。它是我认为问题的FILTER(在下面的例子中未使用),由我读过的其他主题判断。

TotalDisplays = CALCULATE(COUNTA(products[Brand]))

显然,我无法计算品牌出现的次数,因为这会让我重复一次。如果满足以下条件,我需要它是唯一的: 客户必须是一样的 品牌必须是一样的 位置必须相同

如果是这样,我们明确将其视为一个。

我知道我咆哮了一下,似乎已经走了一圈,但我试图弄清楚如何解释它。如果我需要编辑此帖子或发布澄清,请与我们联系。

在我使用DAX进行旅程时,非常感谢!

2 个答案:

答案 0 :(得分:0)

我相信我有答案。我在DAX中使用了NATURALINNERJOIN来创建一个新的合并表,因为我需要在同一个查询中引用所有值(否则无法弄清楚如何进行)。我还创造了一个独特的身份"计算的列,它组合了多行数据,但隐藏在幕后(实际上没有显示在报告上),因此我可以采用这种方式测量唯一值。

TotalDisplays = COUNTROWS(DISTINCT('GD-DP-Merge'[DisplayCountCalcCol]))

我的计算栏如下:

DisplayCountCalcCol = 'GD-DP-Merge'[CustID] & 'GD-DP-Merge'[Brand] & 'GD-DP-Merge'[Location] & 'GD-DP-Merge'[Order#]

因此,度量TotalDisplays现在根据客户ID,品牌和商品位置的唯一值报告不同的行数。为了以防万一,我还丢了一个订单号。

谢谢!

答案 1 :(得分:0)

我是DAX的半新手并且正在与Count和CountA公式挣扎,你的帖子帮助了我答案。我想添加我的查询得到的解决方案:通缉计数正确的时间开始实现因此如果有人在寻找这种答案使用下面,过滤器将选择表格并添加你想要的字符串

RTSA:=计算(COUNTA([RTS]),VEO_Daily_Services [RTS] =" RTSA&#34)