我有两个表(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/

10-12 02:51