如何在Power BI Desktop度量中获取空白的默认字符串值

3

我有两个表(Sales [OrderNumer,Price,ItemId,...]和Item [Id,Name,Type]),我有一个度量值可以返回以下字符串:

 ItemsType1 = CALCULATE(
     CONCATENATEX('Sales', RELATED('Item'[Name]), ","), 'Item'[Type] = "type1" 

我在Power BI Desktop中创建了一个基于订单的表格可视化图,其中包含度量值ItemsType1 [OrderNumer, ItemsType1]。我希望将ItemType1列中的空值更改为默认值“n/a”,并已经重写了该度量值:

 ItemsType1 = VAR x = CALCULATE(
     CONCATENATEX('Sales', RELATED('Item'[Name]), ","), 'Item'[Type] = "type1") 
 RETURN IF( ISBLANK(x), "n/a", x )

此方法返回期望值,但对于我在“销售”表中的 600,000 行,内存急剧增长且可视化崩溃。我有 16GB 的内存。我认为问题出在 IF 语句上,但不知道原因。我想了解为什么会有性能差异,并找到更好的实现方式。 示例
2个回答

0

在您的度量中使用IF语句,您要求视觉返回每个订单号的一行。您的数据集中有多少个订单号?可能的原因是视觉中的行数太多。


这并没有回答问题。一旦您拥有足够的声誉,您就可以评论任何帖子;相反,请提供不需要询问者澄清的答案。- [来自评论审核] (/review/late-answers/34400689) - Moritz Ringler

0

我很确定它爆炸的原因是由于你的写法,它将会对表中所有可能的内容返回"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 )
    )

在进行任何较重的计算之前,这会检查是否存在任何空相关表。


嗨,我尝试了你的建议,但是没有与“type1”相关联的行仍然为空白。就像“concatenatex”表达式仅对具有相关“type1”项目的行进行评估一样,因此对于其余行而言,该度量值为空白。我还尝试在“IF”语句中使用其他条件。 - Avaldes
你说得对。它不会返回type1之外的任何内容。我以为这就是你想要的。你能具体说明想要在哪些层级上显示“n/a”,哪些层级保持空白吗?提供你的可视化截图会有所帮助。 - Alexis Olson
当然,我已经更新了问题,并提供了一个示例图像的链接。我需要针对订单1003添加一个“未适用”的值,因为它没有与“类型1”相关的项目。我的销售表格大约有60万行。 - Avaldes
嗨,我尝试了你的解决方案,但内存性能仍然相同。我认为对于我的情况,COUNTROWS( RELATEDTABLE( 'Item' ) ) = 0 总是为 false - Avaldes
嗯,如果你用 CALCULATE 包裹一下会怎样?CALCULATE(COUNTROWS(RELATEDTABLE('Item')), 'Item'[Type] = "type1") = 0 - Alexis Olson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接