我有一个计算列,它按日期返回每行的排名。从本质上讲,此专栏对客户的购买次数进行排名或“计算”(因为每次购买时,都会添加新行,并且该行的排名高于之前的购买次数。
Purchase Count = RANKX(FILTER(Purchases,Purchases[ID]=EARLIER(Purchases[ID])), Purchases[Date], ,asc)
结果
请注意,Alison有3次购买,如果是按日期购买的第1次,第2次或第3次,则购买计数列计数
我想要的是一个度量,它基本上计算每个客户的最大值数量(这意味着1,因为每个客户只有1个最大值),但COUNT函数不接受MAX函数作为输入。即COUNT(MAXA(购买计数)
我想要开发的是这样的:
但我能做的最好的就是:这只是购买计数计算列的简单计数(如上所示)。我希望条形图与下面的“动态购买(测量)”列相匹配。换句话说,我希望x轴上的3值为1,因为只有1个人进行了3次购买。我想在x轴上使用2来获得值0,因为没有客户已经进行了2次购买,并且我希望x轴上的1值为1,因为“Billy”是唯一的仅购买1件的客户。通过一个简单的计数,它为Alison每列添加1,因为她已经进行了第一次,第二次和第三次购买。 我只想计算她的最大购买次数。我想知道她第一次和第二次购买
答案 0 :(得分:1)
我认为以下内容可能有所帮助。我使用DAX导出了下表。然后,您可以在视觉的值选择中使用Count(Distinct)来获得您想要的内容。
我很快将这个堆积的柱形图与它一起扔了:
它显示:史蒂夫的最大购买数为1; John和Billy的最大购买数量分别为2;和艾莉森的最大购买数量为3。
我提到的Count(Distinct)设置是:
这里是添加MaxPerCustomer和CountOfMaxPerCustomerMatches列的DAX代码:
MaxPerCustomer = if(calculate(max(Table11[Purchase Count]),filter(Table11,Table11[Name]=earlier(Table11[Name])))=Table11[Purchase Count],calculate(max(Table11[Purchase Count]),filter(Table11,Table11[Name]=earlier(Table11[Name]))),BLANK())
和
CountOfMaxPerCustomerMatches = calculate(COUNT(Table11[MaxPerCustomer]),filter(Table11,Table11[MaxPerCustomer]=EARLIER(Table11[MaxPerCustomer])))
编辑附录如下: (此附录是对您的评论的回应)
然后,您可以根据上面的内容创建一个新表...
...使用Table = GROUPBY(Table11,Table11[MaxPerCustomer],"CountOfMaxPerCustomerMatchesGrouped",countx(CURRENTGROUP(),Table11[MaxPerCustomer]))
,它将为您提供:
然后将该新表用于视觉效果:
答案 1 :(得分:0)
我提出的解决方案可能不是最优雅的解决方案,但它可以解决计算中的列和表,而不考虑切片机。
1)我使用CALENDAR
函数在Power BI中创建了一个只是整数的表。
Counts = SELECTCOLUMNS(
CALENDAR(DATE(1900, 1, 2), DATE(1900, 1, 6)),
"Count", DATEDIFF(DATE(1900, 1, 1), [Date], DAY)
)
2)我将Counts表交叉连接到原始表并仅选择了必要的列。
PurchaseCounts = CROSSJOIN(
SELECTCOLUMNS(Purchases,
"Date", Purchases[Date],
"ID", Purchases[ID]
),
Counts
)
3)在该交叉连接表中,我添加了所需的度量。
CustomerCount = CALCULATE(
DISTINCTCOUNT(PurchaseCounts[ID]),
FILTER(
GROUPBY(PurchaseCounts,
PurchaseCounts[ID], PurchaseCounts[Count],
"PurchaseCount", COUNTX(CURRENTGROUP(), PurchaseCounts[Date])
),
PurchaseCounts[Count] = [PurchaseCount]
)
)
4)我根据交叉连接表制作了一些快速视觉效果和切片器。按日期过滤时,直方图显示预期值。