0

我有两张简单的桌子。我需要能够确定在特定日期(比如一月)谁是“新人”,然后只计算这些属性。名称上存在 1:M 关系。我基本上需要用以下数据来回答以下问题:

  1. 每月登录的家庭成员总数是多少?(使用自定义度量完成)
  2. 在#1 的总数中 - 有多少人是第一次登录?
  3. 在#2 的总数中 - 有多少是孩子?有多少是成年人?

登录表

ID 姓名 日期
登录1 山姆
登录2 山姆
登录3 戴夫
登录4 戴夫
登录5 杰克
登录6 山姆
登录7 詹姆士 二月
登录8 詹姆士 二月
登录9 詹姆士 二月
登录10 山姆 二月
登录11 山姆 二月
登录12 史蒂夫 二月

联系表

姓名 家庭成员 孩子 成人
山姆 3 1 2
詹姆士 2 1 1
戴夫 4 2 2
杰克 1 0 1
史蒂夫 6 1 5

使用这些在 2 月过滤的数据,我们会看到史蒂夫在该日期之前从未登录,因此这使他成为“新人”。詹姆斯也是新人。

我最接近的尝试是自定义的“新个体计数”度量


VAR currentUsers = VALUES('Log-Ins'[Name])
VAR currentDate = MIN('Log-Ins'[Date])

VAR pastUsers = CALCULATETABLE(VALUES('Log-Ins'[Name]), 
    ALL('Log-Ins'[Date].[Month],'Log-Ins'[Date].[MonthNo],'Log-Ins'[Date].[Year])
    , 'Log-Ins'[Date]<currentDate)

VAR newUsers = EXCEPT(currentUsers,pastUsers)

RETURN COUNTROWS(newUsers)

正如你所看到的,这给了我新人的数量,但我想计算他们的属性来表示::在 11 个家庭成员中,有 8 个是新成员。在这 8 人中,6 人是成人,2 人是儿童。

图像

4

1 回答 1

0

我可能在翻译中迷失了方向,但我不明白您希望如何准确地显示信息。

在此处输入图像描述

#ContactsWhoLoggedIN := 
CALCULATE(COUNTROWS(Contacts),FILTER(Contacts,CALCULATE(COUNTROWS(LogIN)>0)))

#NewCWhoLoggedIN := 
CALCULATE(COUNTROWS(Contacts),
FILTER(Contacts,
//LoggedIn in the Current Date Context
CALCULATE(COUNTROWS(LogIN))>0
&&
//Never LoogedIN before the Current Date Context
CALCULATE(COUNTROWS(LogIN),FILTER(ALL(Dates),Dates[Date]<MIN(Dates[Date])))=0
)
)

#CWhoLoggedBackIN := [#ContactsWhoLoggedIN]-[#NewCWhoLoggedIN]

#FM_NewCWLI := 
CALCULATE(SUM(Contacts[FamilyMembers]),
FILTER(Contacts,
//LoggedIn in the Current Date Context
CALCULATE(COUNTROWS(LogIN))>0
&&
//Never LoogedIN before the Current Date Context
CALCULATE(COUNTROWS(LogIN),FILTER(ALL(Dates),Dates[Date]<MIN(Dates[Date])))=0
)
)

我记得“Microsoft Excel 2013:使用 PowerPivot 构建数据模型”中的这种模式

于 2021-04-13T22:11:48.090 回答