我正在为供应链缺货创建PowerBI仪表板。我从Microsoft观看了一段很棒的视频,在他们的Destiny仪表板上演示了动态消息卡,其中显示了玩家和他们喜欢的武器https://youtu.be/uHP7YJH526c?t=2438 ...我认为这是一个很酷的功能,但可以显示受销售代表影响的补货和他们的帐户。我基本上是复制和粘贴他的代码,但是修改了变量并添加了“受影响的产品”。不幸的是,它不能很好地工作(某些情况下可以工作),但是大部分时间我都知道:
错误消息:MdxScript(Model)(17,125)测量中的错误 “ Salesforce CC补货报告” [BackorderIQ]:多个表格 在期望使用单个值的地方提供了值。
我发现这与以下事实有关:如果我选择了一个销售代表,则他们可能有多个待补产品,因此我尝试了maxBackorderForProduct变量(COUNT,COUNTA,COUNTX,COUNTAX,MAX, MAXX,MAXA)……到目前为止,MAXX不太可能破坏它,所以我现在正在使用它。
BackorderIQ =
VAR selectedRepName =
FIRSTNONBLANK ( 'BOreport'[Sales Rep Name], TRUE )
VAR selectedActName =
FIRSTNONBLANK ( 'BOreport'[Account Name], TRUE )
VAR selectedProduct =
FIRSTNONBLANK ( 'BOreport'[Product ID], FALSE () )
VAR maxBackorderforSelectedAct =
MAXX (
SUMMARIZECOLUMNS (
'BOreport'[Sales Rep Name],
"Orders", SUM ( 'BOreport'[Back Order Qty] )
),
[Orders]
)
VAR maxBackorderforSelectedRep =
MAXX (
SUMMARIZECOLUMNS (
'BOreport'[Account Name],
"Orders", SUM ( 'BOreport'[Back Order Qty] )
),
[Orders]
)
VAR maxBackorderForProduct =
MAXX (
SUMMARIZECOLUMNS (
'BOreport'[Product ID],
"Orders", SUM ( 'BOreport'[Back Order Qty] )
),
[Orders]
)
RETURN
IF (
HASONEVALUE ( 'BOreport'[Sales Rep Name] ),
selectedRepName & " has " & maxBackorderforSelectedRep & " backorders of " & selectedProduct & " at "
& LOOKUPVALUE (
'BOreport'[Account Name],
'BOreport'[Back Order Qty], MAX ( 'BOreport'[Back Order Qty] )
),
IF (
HASONEVALUE ( 'BOreport'[Account Name] ),
selectedActName & "'s has " & maxBackorderforSelectedAct & " backorders of " & selectedProduct & ", so give "
& LOOKUPVALUE (
'BOreport'[Sales Rep Name],
'BOreport'[Back Order Qty], MAX ( 'BOreport'[Back Order Qty] )
) & " a heads up.",
"Select a Product below, OR an Account or Sales Rep to the right."
)
)
我希望我能得到一张卡片,上面写着“ ACCOUNT2有50个ProductB缺货订单,所以请让JOHN SMITH提前注意。”这是他们可以获得的最大值,因为JOHN SMITH可能还有Account1的20个ProductA缺货订单。
答案 0 :(得分:0)
我怀疑错误是由HASONEVALUE('BOreport'[Sales Rep Name])块中的这一行引起的:
selectedRepName & " has " & maxBackorderforSelectedRep & " backorders of " & selectedProduct & " at "
此代码包含3个元素: selectedRepName,maxBackorderforSelectedRep和selectedProduct
maxBackorderforSelectedRep不会引起任何麻烦,因为它始终返回1值。
selectedRepName可能会引起麻烦(如果未选择特定的Rep,它将返回多个值),但是该公式可防止使用HASONEVALUE的这种情况。
selectedProduct与selectedRepName相似,因此,如果未选择特定的rep,则它可能返回多个值,并且您没有针对这种情况的保护措施。因此,错误。
一种简单的解决方法是添加类似的保护措施:
IF (
HASONEVALUE ( 'BOreport'[Sales Rep Name] ) &&
HASONEVALUE ( 'BOreport'[Product ID]),
selectedRepName & " has " & maxBackorderforSelectedRep & " backorders of " & selectedProduct & " at "
& LOOKUPVALUE (
'BOreport'[Account Name],
'BOreport'[Back Order Qty], MAX ( 'BOreport'[Back Order Qty] )
),
同样的逻辑也应适用于第二个块:
IF (
HASONEVALUE ( 'BOreport'[Account Name] ) &&
HASONEVALUE ( 'BOreport'[Product ID]),
selectedActName & "'s has " & maxBackorderforSelectedAct & " backorders of " & selectedProduct & ", so give "
& LOOKUPVALUE (
'BOreport'[Sales Rep Name],
'BOreport'[Back Order Qty], MAX ( 'BOreport'[Back Order Qty] )
) & " a heads up."
那应该消除错误。但是,我不能保证您会获得所需的行为-该公式表示您必须选择特定的代表 AND 特定的产品,否则它将返回默认消息。