如何解决我可以基于多个条件显示值的首次出现吗?
我要完成的工作是根据开始日期显示每个角色的第一次出现。我在上图中的最后一列中添加了一个示例。
因此条件将是:
- 技能组1 必须不同于技能组2
- 如果技能组1 和技能组2 包含第一个匹配项,但它们位于不同的行,则将它们连接起来
- 如果技能组1 为空白,但技能组2 包含必需的值,则显示技能组2 (也适用于其他方法)
到目前为止,我尝试使用Dax自定义列,其中包含以下代码,但这不是我想要的:
FirstOC =
var skill1 = IF( NOT( ISBLANK( Table[Skillset 1] ) ),COUNTROWS(
FILTER(
'Table',[Project] = EARLIER([project]) &&
[Skillset 1] = EARLIER([Skillset 1])&&
[index] <= EARLIER([index])
)
) = 1)
var skill2 = IF( NOT( ISBLANK( Table[Skillset 2] ) ),[Project] = EARLIER([project]) &&
[Skillset 2] = EARLIER([Skillset 2])&&
[index] <= EARLIER([index])
)
) = 1)
var date = CALCULATE ( MIN ( Table[Start Date].[Date] ),ALLEXCEPT ( Table,Table[Index] ) )
return
SWITCH(TRUE(),NOT(ISBLANK( skill1)) && skill1 <> skill2,Table[Skillsset 1],not(ISBLANK(skill2)) && skill2 <> skill1,Table[Skillset 2]
)
通过 DAX 甚至 SQL 是否可行?
解决方法
尝试以下DAX / Measure-
考虑您的表格名称:允许
concanate_skillset =
VAR current_row_skill_1 = MIN(concanate[skillset 1])
VAR current_row_skill_2 = MIN(concanate[skillset 2])
VAR current_row_start_date = MIN(concanate[start date])
VAR find_prev_occurance_skill_1 =
COUNTROWS(
FILTER(
ALL(concanate),(concanate[skillset 1] = current_row_skill_1 || concanate[skillset 2] = current_row_skill_1)
&& concanate[start date] < current_row_start_date
)
) + 0
VAR find_prev_occurance_skill_2 =
COUNTROWS(
FILTER(
ALL(concanate),(concanate[skillset 1] = current_row_skill_2 || concanate[skillset 2] = current_row_skill_2)
&& concanate[start date] < current_row_start_date
)
) + 0
RETURN IF(find_prev_occurance_skill_1 = 0,current_row_skill_1,"")
& IF(
current_row_skill_1 = BLANK() || current_row_skill_2 = BLANK(),"",IF(
find_prev_occurance_skill_1 = 0 && find_prev_occurance_skill_2 = 0,",""
)
)
& IF(find_prev_occurance_skill_2 = 0,current_row_skill_2,"")
这是您的示例数据的最终输出-
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。