加入一对多时如何用 Power BI 中的值替换 NULL
How to substitute NULL with value in Power BI when joining one to many
在我的模型中,我有 table AssignedToUser
不包含任何 NULL 值。
Table TotalCounts
包含每个用户的任务数。
这两个 table 加入了 UserGUID,并且 table TotalCounts 包含 UserGUID 的 NULL 值。
当我将所有内容都放在一个 table 中时,AssignedToUser
的值为 NULL。
如何将 "POOL".
的值 NULL 替换为 AssignedToUser
我尝试在 EditQuery 下创建附加列
if [AssignedToUser] = null then "POOL" else [AssignedToUser]
但这并没有帮助。
更新:
谢谢亚历克西斯。
我已经创建了 FullAssignedToUsers table,但是当我尝试在 UserGUID 上与 TotalCounts 建立关系时 - 它不喜欢它。
新 table 中的数据如下所示:
更新:
可以在此处访问文件 .ipbx:
https://www.dropbox.com/s/95frggpaq6tce7q/User%20Open%20Closed%20Tasks%20Experiment.pbix?dl=0
我认为这里的问题是您的联接具有 UserGUID
值,这些值不在您的 AssignedToUsers
table.
中
要更正此问题,一种可能是将您的 AssignedToUsers
table 替换为包含 TotalCounts
table 中所有 UserGUID
值的一个。
FullAssignedToUsers =
ADDCOLUMNS(VALUES(TotalCounts[UserGUID]),
"AssignedToUser",
LOOKUPVALUE(AssignedToUsers[AssignedToUser],
AssignedToUsers[UserGUID], TotalCounts[UserGUID]))
应该可以让您获得完整的外部连接。然后,您可以像 table 中描述的那样创建自定义列,并在您的视觉对象中使用该列。
您可能想要打破与原始 AssignedToUsers
table 的关系,并改为与新关系建立关系。
如果您不想执行该额外步骤,可以在新的 table 公式中执行 ISBLANK
。
FullAssignedToUsers =
ADDCOLUMNS(VALUES(TotalCounts[UserGUID]),
"AssignedToUser",
IF(
ISBLANK(
LOOKUPVALUE(AssignedToUsers[AssignedToUser],
AssignedToUsers[UserGUID], TotalCounts[UserGUID])),
"POOL",
LOOKUPVALUE(AssignedToUsers[AssignedToUser],
AssignedToUsers[UserGUID], TotalCounts[UserGUID])))
注意:这相当于在查询编辑器中对 AssignedToUsers
table 进行右外连接合并,然后用 "POOL" 替换空值。我实际上建议以这种方式接近它。
另一种方法是将 AssignedToUser
列拉到自定义列中的 TotalCounts
table 并在您的视觉对象中使用该列。
AssignedToUsers =
IF(ISBLANK(RELATED(AssignedToUsers[AssignedToUser])),
"POOL",
RELATED(AssignedToUsers[AssignedToUser]))
这相当于在查询编辑器中对 TotalCounts
table 进行左外连接合并,扩展 AssignedToUser
列,然后用 "POOL" 替换空值在那一栏中。
在 Dax 中,缺失值是 Blank() 不为空。试试这个:
=IF(
ISBLANK(AssignedToUsers[AssignedToUser]),
"Pool",
AssignedToUsers[AssignedToUser]
)
在我的模型中,我有 table AssignedToUser
不包含任何 NULL 值。
Table TotalCounts
包含每个用户的任务数。
这两个 table 加入了 UserGUID,并且 table TotalCounts 包含 UserGUID 的 NULL 值。
当我将所有内容都放在一个 table 中时,AssignedToUser
的值为 NULL。
如何将 "POOL".
我尝试在 EditQuery 下创建附加列
if [AssignedToUser] = null then "POOL" else [AssignedToUser]
但这并没有帮助。
更新: 谢谢亚历克西斯。 我已经创建了 FullAssignedToUsers table,但是当我尝试在 UserGUID 上与 TotalCounts 建立关系时 - 它不喜欢它。
新 table 中的数据如下所示:
更新: 可以在此处访问文件 .ipbx:
https://www.dropbox.com/s/95frggpaq6tce7q/User%20Open%20Closed%20Tasks%20Experiment.pbix?dl=0
我认为这里的问题是您的联接具有 UserGUID
值,这些值不在您的 AssignedToUsers
table.
要更正此问题,一种可能是将您的 AssignedToUsers
table 替换为包含 TotalCounts
table 中所有 UserGUID
值的一个。
FullAssignedToUsers =
ADDCOLUMNS(VALUES(TotalCounts[UserGUID]),
"AssignedToUser",
LOOKUPVALUE(AssignedToUsers[AssignedToUser],
AssignedToUsers[UserGUID], TotalCounts[UserGUID]))
应该可以让您获得完整的外部连接。然后,您可以像 table 中描述的那样创建自定义列,并在您的视觉对象中使用该列。
您可能想要打破与原始 AssignedToUsers
table 的关系,并改为与新关系建立关系。
如果您不想执行该额外步骤,可以在新的 table 公式中执行 ISBLANK
。
FullAssignedToUsers =
ADDCOLUMNS(VALUES(TotalCounts[UserGUID]),
"AssignedToUser",
IF(
ISBLANK(
LOOKUPVALUE(AssignedToUsers[AssignedToUser],
AssignedToUsers[UserGUID], TotalCounts[UserGUID])),
"POOL",
LOOKUPVALUE(AssignedToUsers[AssignedToUser],
AssignedToUsers[UserGUID], TotalCounts[UserGUID])))
注意:这相当于在查询编辑器中对 AssignedToUsers
table 进行右外连接合并,然后用 "POOL" 替换空值。我实际上建议以这种方式接近它。
另一种方法是将 AssignedToUser
列拉到自定义列中的 TotalCounts
table 并在您的视觉对象中使用该列。
AssignedToUsers =
IF(ISBLANK(RELATED(AssignedToUsers[AssignedToUser])),
"POOL",
RELATED(AssignedToUsers[AssignedToUser]))
这相当于在查询编辑器中对 TotalCounts
table 进行左外连接合并,扩展 AssignedToUser
列,然后用 "POOL" 替换空值在那一栏中。
在 Dax 中,缺失值是 Blank() 不为空。试试这个:
=IF(
ISBLANK(AssignedToUsers[AssignedToUser]),
"Pool",
AssignedToUsers[AssignedToUser]
)