我尝试根据某些条件从表格中提取一列:
以下是该方案:
我有一个tb1
表(project_id, month_end_date, monthly_proj_cost)
和tb2
表`(project_id,key_member_type,key_member,start_dt_active,end_dt_active)。
我想从key_member where key_member_type="PM"
中提取tb1 (month_end_date)
并激活。
这可以使用DAX吗?
谢谢, Satya T
答案 0 :(得分:2)
我喜欢在开发时慢慢建立措施。如果需要,您可以将这些度量基本上组合到一个度量中,但出于指导目的,我更倾向于显示实现所需DAX目标的中间步骤。
创建一个度量以返回单个key_member
。我认为这是文字所以我用
AnyMember :=
LASTNONBLANK ( tb2[key_member], 1 )
如果是数字,您只需使用MAX(tb2[key_member])
即可。使用哪种汇总并不重要,因为我们每key_member
只会返回一个project_id
。
创建一个过滤LastMember的度量,以便我们只返回" PM" key_member_types。
AnyPM :=
CALCULATE ( [AnyMember], tb2[key_member_type] = "PM" )
如果您有连续日期表,请在日期表和tb2 [end_dt_active]之间创建关系。然后创建此度量:
LastActivePM :=
CALCULATE (
[AnyPM],
DATESBETWEEN (
BasicCalendarEnglish[DateKey],
MIN ( tb1[month_end_date] ),
DATE ( 4000, 1, 1 )
)
)
这只会过滤掉end_dt_active
位于tb1[month_end_date]
之前的所有PM。
如果没有日期表,要实现相同的过滤器,您可以执行以下操作:
LastActivePM :=
CALCULATE (
[AnyPM],
FILTER (
VALUES ( tb2[end_dt_active] ),
tb2[end_dt_active] >= MAX ( tb1[month_end_date] )
)
)
根据您的来源中的行数,第二行可能无法很好地执行,但我猜测您更多的是数百个项目的订单,而不是数百万。