首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DAX / Power BI -最大计数

问DAX / Power BI -最大计数
EN

Stack Overflow用户
提问于 2017-07-21 16:22:45
回答 2查看 2.6K关注 0票数 1

我有一个经过计算的列,它按日期返回每一行的等级。本质上,这一列是对客户进行的采购数量进行排序或“计数”(因为每次他们进行新的购买时,都会添加一个新的行,并且该行的排名比他们以前的购买要高。

代码语言:javascript
复制
Purchase Count = RANKX(FILTER(Purchases,Purchases[ID]=EARLIER(Purchases[ID])), Purchases[Date], ,asc)   

结果

请注意,艾莉森有三次购买,如果是她的第一次、第二次或第三次购买,则购买计数列将按日期计算。

​

​

我想要的是一个度量,它本质上将计算每个客户的最大值数(这意味着1,因为每个客户只有一个最大值),但是count函数将不接受MAX函数作为输入。即清点(MAXA(购货计数)

我想发展的是这样的东西:

​

​

但我所能做的就是:这只是购买计数计算列的一个简单计数(见上文)。我希望条形图与下面的“动态采购(度量)”栏相匹配。换句话说,我希望x轴上的3有一个1的值,因为只有一个人做了3次购买。我让x轴上的2的值为0,因为没有客户购买过2次,我希望x轴上的1有1的值,因为“比利”是唯一只购买了1次的客户。通过简单的统计,它为艾莉森的每一栏增加了一个,因为她已经完成了第一、第二和第三次购买。我只想数数她最大的购买量。我想忽略她第一次和第二次购买

​

​

EN

回答 2

Stack Overflow用户

发布于 2017-07-21 17:28:11

我认为以下几点可能会有所帮助。我使用DAX导出了下表。然后,您可以在视觉的值选择中使用计数(不同)来获取您想要的内容。

​

​

我很快就把这个堆叠的柱状图连同它一起扔到了一起:

​

​

它显示:史蒂夫有一个最大的购买数为1;约翰和比利都有一个最大的购买计数,每个2;艾莉森有一个最大的购买计数3。

我提到的计数(不同)设置如下:

​

​

下面是添加MaxPerCustomer和CountOfMaxPerCustomerMatches列的DAX代码:

代码语言:javascript
复制
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())

和

代码语言:javascript
复制
CountOfMaxPerCustomerMatches = calculate(COUNT(Table11[MaxPerCustomer]),filter(Table11,Table11[MaxPerCustomer]=EARLIER(Table11[MaxPerCustomer])))

编辑增编如下:(本增编是对您的评论的回应)

然后,您也可以根据上面所做的创建一个新的表。

​

​

...using Table = GROUPBY(Table11,Table11[MaxPerCustomer],"CountOfMaxPerCustomerMatchesGrouped",countx(CURRENTGROUP(),Table11[MaxPerCustomer])),它将给您提供以下内容:

​

​

然后使用该新表进行可视化:

​

​

票数 1
EN

Stack Overflow用户

发布于 2017-08-21 15:47:49

我想出的解决方案可能不是最优雅的解决方案,但它绕过计算过的列和表,没有考虑到切片器。

1)我在Power中创建了一个表,该表只是使用CALENDAR函数生成的整数。

代码语言:javascript
复制
Counts = SELECTCOLUMNS(
    CALENDAR(DATE(1900, 1, 2), DATE(1900, 1, 6)), 
    "Count", DATEDIFF(DATE(1900, 1, 1), [Date], DAY)
)

​

​

2) I交叉连接,将表计数到原始表,并且只选择必要的列。

代码语言:javascript
复制
PurchaseCounts = CROSSJOIN(
    SELECTCOLUMNS(Purchases, 
        "Date", Purchases[Date], 
        "ID", Purchases[ID]
    ),
    Counts
)

​

​

3)在那个交叉表中,我添加了所需的度量。

代码语言:javascript
复制
CustomerCount = CALCULATE(
    DISTINCTCOUNT(PurchaseCounts[ID]),
    FILTER(
        GROUPBY(PurchaseCounts, 
            PurchaseCounts[ID], PurchaseCounts[Count], 
            "PurchaseCount", COUNTX(CURRENTGROUP(), PurchaseCounts[Date])
        ),
        PurchaseCounts[Count] = [PurchaseCount]
    )
)

​

​

4)我制作了一些快速的可视化工具和一个基于交叉表的切片器。按日期过滤时,直方图显示期望值。

​

​

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45242453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档