这里的初学者,迫切需要您的帮助。
基本上,我需要一个新列来获取图像中显示的任一列的值,除非这两列均为空。如果两者都为空,则新列应显示“未输入纪律”。
我的PowerBI版本仅在“编辑查询”窗口中添加了一个自定义列选项。我尝试了以下解决方案,但显然存在概念错误,没有正确使用解决方案。 感谢您的耐心配合和帮助!
答案 0 :(得分:3)
获得“ Expression.Error:名称...”错误的原因是,您试图在Power Query编辑器中输入DAX公式。 Power Query使用另一种称为“ M”的语言,并且无法识别DAX。您可以通过两种方式解决此问题:
1)退出查询编辑器,然后在PowerBI窗口中转到“建模”选项卡并创建“新列”。在此处输入DAX公式;
2)如果您想解决Power Query中的问题,请在此处创建一个自定义列,然后输入以下“ M”公式:
each List.First(List.RemoveNulls({[PIDISK], [PI_DISK]}), "No Disk Entered"))
公式的工作方式:List.RemoveNulls从您提供的列列表中删除空值。然后从结果中选择第一个值;如果没有,则使用默认选项(“未输入磁盘”)。只要确保您的NULL真正为空即可。
答案 1 :(得分:0)
如果您想在DAX中执行此操作,建议您使用SWITCH ( TRUE() ...)
方法来代替嵌套的if语句(this article会详细说明)。我相信这会产生预期的结果;根据您的屏幕截图,我认为这些空值是文本字符串vs. NULL
。如果它是真实的NULL
,则PowerBI使用BLANK()
。
= SWITCH (
TRUE (),
[PIDISC] <> "null", [PIDISC],
[PI_DISC] <> "null", [PI_DISC],
"no disc entered"
)
计算为TRUE()
的第一个条件将优先。
答案 2 :(得分:0)
嵌套的IF
对此还不错:
IF([PIDISC] = "null" && [PI_DISC] = "null",
"NO DISC ENTERED,
IF([PIDISC] = "null",
[PI_DISC],
[PIDISC]
)
)
或
IF([PIDISC] <> "null",
[PIDISC],
IF([PI_DISC] <> "null",
[PI_DISC],
"NO DISC ENTERED"
)
)
如果这些是空白而不是文本“ null”,那么它看起来可能会有所不同。
IF(ISLBANK([PIDISC]) && ISBLANK([PI_DISC]),
"NO DISC ENTERED,
IF(ISLBANK([PIDISC]),
[PI_DISC],
[PIDISC]
)
)
或
IF(NOT(ISLBANK([PIDISC])),
[PIDISC],
IF(NOT(ISBLANK([PI_DISC]),
[PI_DISC],
"NO DISC ENTERED"
)
)
编辑:
由于您尝试在查询编辑器中工作,因此您的M语言自定义列可能如下所示:
if [PIDISC] = "null" and [PI_DISC] = "null"
then "NO DISC ENTERED"
else if [PIDISC] = "null" then [PI_DISC]
else if [PI_DISC] = "null" then [PIDISC]
else "Else Condition"
或
if [PIDISC] = "" and [PI_DISC] = "" then "NO DISC ENTERED"
else if [PIDISC] = "" then [PI_DISC]
else if [PI_DISC] = "" then [PIDISC]
else "Else Condition"
答案 3 :(得分:0)
怎么了?根据您是否具有“空”字符串或blank()值,这两种方法均应起作用:
“空”
New Column =
SWITCH (
TRUE (),
AND ( [PIDISC] = "null", [PI_DISC] = "null" ), "NO DISC ENTERED",
[PIDISC] = "null", [PI_DISC],
[PI_DISC] = "null", [PIDISC]
)
已测试:
BLANK()
New Column =
SWITCH (
TRUE (),
AND ( ISBLANK([PIDISC]), ISBLANK([PI_DISC]) ) , "NO DISC ENTERED",
ISBLANK ( [PIDISC] ), [PI_DISC],
ISBLANK ( [PI_DISC] ), [PIDISC]
)
希望这会有所帮助!