解决 Power BI 的报错 MdxScript(Model) (48, 2) A table of multiple values was supplied where a single value was expected. The current operation was cancelled because another operation in the transaction failed
PowerBI
异常说明

两个表格的关系如图所示。
当我一开始使用 “任务表”[TaskId] 关联 “关键词竞品listing信息”[TaskId] 时,Power BI 一直报错,显示
Error Message: MdxScript(Model) (48, 2) A table of multiple values was supplied where a single value was expected. The current operation was cancelled because another operation in the transaction failed
解决方案
1 更新日期:20250208
①报这个错误时,先使用单边表(one side)的另一个唯一值列与多边表字段创建关系。然后将单边表的字段改成正确字段即可。
若没有另一个唯一值列的,先创建一个,如创建最简单的数字 1~n 列。
– ----------------------------- 分 隔 线 ----------------------------- –
2 更新日期:250210
创建关系保存后,修改其中一个代码生成表时,继续报了这个错误。
这段修改模型的过程涉及两个对象:度量 关键词首选Asin 和表格 关键词和首选listing 。代码如下所示。
度量 关键词首选Asin 通过 TopN函数 取第一个。在查看后发现,TopN 会返回排序值相同的所有行。即这个TopN函数 并不一定只返回一行的值。比如度量 关键词首选Asin 函数,只要排序参数的 ‘关键词竞品listing信息’[Sales] 值相同,就会返回。若存在销量值相同的多行时,使用 VALUES(‘关键词竞品listing信息’[Asin]) 就会报错。
因此,若想要返回单值,有两种思路:
①使用聚合函数,返回单值。如SUM ,COUNT …若返回值为文本,则使用文本聚合函数,如:MAX,MIN 等。
②增加 TopN 的排序参数,以增加返回唯一值的可能性。注:该方法并不能一定确保返回一行值,除非在排序参数中使用具有唯一值的列。
此处推荐第一种方法,具体情况看需求。
因此:存在这个报错时,另外一个可能的解决办法是检查操作涉及的度量值,确保单值函数返回值唯一。如CALCUALTE 函数返回的值唯一
-- 【measure】
关键词首选Asin =
VAR FirstFilterTable = FILTER(
'关键词竞品listing信息',
'关键词竞品listing信息'[是否拍卖]="非拍卖"
&& '关键词竞品listing信息'[Status]=0
&& '关键词竞品listing信息'[敏感和品牌词]="正常"
)
RETURN
CALCULATE(
VALUES('关键词竞品listing信息'[Asin])
-- MAX('关键词竞品listing信息'[Asin])
, TOPN (
1,
FirstFilterTable,
'关键词竞品listing信息'[Sales], 0
)
)
-- 【table】
关键词和首选listing =
FILTER(
ADDCOLUMNS(
VALUES('任务表'[Keyword])
, "Asin"
, [关键词首选Asin]
)
, NOT ISBLANK([Asin])
-- && [第一页销量占比] < 0.75
)
– ----------------------------- 分 隔 线 ----------------------------- –
花絮
一看到这个报错,我就知道事情不简单。
经常使用 PowerBI 的朋友都知道,通常情况下关系建立报错时,若将多边错误写成单边,或者单边存在重复值时,软件会将重复值提示出来。而这里,它只显示预期是单个值而实际为多值。可以看到,这个报错很不寻常。
尝试1:设置 Key Column
考虑到 Power BI 的 Key Column 的设置需要列值唯一,因此我尝试将 “任务表”[TaskId] 设置为 Key Column 。设置成功。于是我继续尝试创建上述关系,继续报这个错。
注:Key Column 在 模型视图Model View 中,选中表格时右侧出现的 属性Properties 中。

尝试2:检查是否存在重复值
用 DAX 代码查看了每一个 “任务表”[TaskId] 的行数,发现都是1。创建任务,继续这个错误。
尝试3:关闭重启
保存 Power BI 然后重启,创建关系,还是相同的错误。
有点崩溃!
尝试4:修改关系列
考虑到之前有出过缓存错误而导致的异常报错情况,于是我将 “任务表”[_id] 关连 “关键词竞品listing信息”[TaskId] ,居然成功了。(注,这个 “任务表” 有两个唯一列)
接着,我将 “任务表”[_id] 替换成 “任务表”[TaskId] ,没有报错,居然成功了?是的,创建成功了!!

3210

被折叠的 条评论
为什么被折叠?



