我有两个表(Sales [OrderNumer,Price,ItemId,...]和Item [Id,名称,类型]),并且有一个度量返回这样的字符串:
ItemsType1 = CALCULATE(
CONCATENATEX('Sales', RELATED('Item'[Name]), ","), 'Item'[Type] = "type1"
我在Power BI Desktop中的订单级别有一个表格视觉,度量为ItemsType1 [OrderNumer,ItemsType1]。我想通过“ n / a”之类的默认值来更改ItemType1列的BLANK值,并将度量重写为:
ItemsType1 = VAR x = CALCULATE(
CONCATENATEX('Sales', RELATED('Item'[Name]), ","), 'Item'[Type] = "type1")
RETURN IF( ISBLANK(x), "n/a", x )
该度量返回期望值,但是以这种方式,对于我在
Sales
表中的600000行,内存突然增长并且视觉崩溃。我有16GB的内存。我认为问题出在IF语句上,但我不知道为什么。我想了解为什么这种性能差异以及实现此目的的最佳方法是什么。 最佳答案
我很确定它之所以会爆炸是因为您编写的方式,它将为表中所有可能的内容返回"n/a"
,而不仅仅是您正在过滤的type1
。
解决方案是将IF
移动到串联中。尝试这样的事情:
ItemsType1 =
CALCULATE (
CONCATENATEX ( 'Sales',
IF(ISBLANK( RELATED ( 'Item'[Name] ) )
"n/a",
RELATED ( 'Item'[Name] )
),
"," ),
'Item'[Type] = "type1"
)
上面的工作不符合我的预期。尝试将您的
RETURN
行更改为此:RETURN
IF(
COUNTROWS( RELATEDTABLE( 'Item' ) ) = 0,
BLANK(),
IF( ISBLANK( x ), "n/a", x )
)
这会在执行任何较大的计算之前检查任何空的相关表。
关于powerbi - 如何在Power BI Desktop度量中获取空白的默认字符串值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54430990/