2017-08-24 84 views
2

我看了很多關於COUNTCOUNTA的帖子,但我似乎無法弄清楚如何正確使用它。DAX COUNT/COUNTA的功能

我是DAX的新手,正在學習我的方式。我試圖去查看這個問題,並且已經得到了一些我需要的地方,但不是完全一致。我想我對如何應用過濾器感到困惑。

情況如下: 四個單獨的查詢用於在報告中生成數據;但只需使用兩個DAX功能(ProductsDisplay)。 我有三列,我需要進行過濾,如下所示:

  • 客戶(DisplayProducts查詢;可以做兩種)
  • 品牌(Products查詢)
  • 位置(Display查詢)

我想根據數據是否唯一來計算列數。 下面是一個例子:

  • 客戶:大賣場購買;
  • 項目:樂高大塊;
  • 品牌:樂高;
  • 產品所在地:玩具;

BREAK

  • 客戶:大賣場購買;
  • 項目:樂高星球大戰;
  • 品牌:樂高;
  • 產品所在地:玩具;

BREAK

  • 客戶:大賣場購買;
  • 產品編號: Surface Pro;
  • 品牌:微軟;
  • 位置:電子;

BREAK

  • 客戶:小商店的角落;
  • 項目:紅色自行車;
  • 品牌:迷航;
  • 地點:架;

在這個例子中,無論項目是不同的事實,我們只想看顧客,品牌和位置。我們在前兩個記錄中看到,客戶是「Big Box Buy」,品牌是「Lego」,位置是「玩具」。這會出現兩次,但我想將其統計爲「1」。下一個「Big Box Buy」商店的品牌爲「Microsoft」,位置爲「Electronics」。它只出現過一次,因此不同的計數是「1」。這意味着「Big Box Buy」有兩個單獨的條目,兩個條目的數量均爲1.最後,「角落裏的小商店」只出現一次,只計算一次。

我所擁有的代碼的「骨架」基本上只是爲了看看我能不能計數,我可以。我認爲它是FILTER是我讀過的其他線程判斷的問題(在下面的例子中沒有使用)。

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

很明顯,我不能只計算一個品牌出現的次數,因爲這會給我重複。我需要它獨特的基於如果滿足以下條件: 客戶必須是同一品牌 必須是同一 位置必須是相同的

如果是這樣,我們清楚地指望它作爲一個。

我知道我跑了一下,可能似乎已經圈了,但我試圖找出如何解釋它。請讓我知道是否需要編輯這篇文章或發表澄清。

非常感謝,因爲我經歷了與DAX的旅程!

回答

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,該品牌的獨特價值行的重複計數,並且位置該項目。爲了以防萬一,我還投入了一個訂單號。

謝謝!