【问题标题】:Power BI filtering issues with matrix矩阵的 Power BI 筛选问题
【发布时间】:2020-08-16 04:39:29
【问题描述】:

谁能帮帮我。

查看附件图片。

Power BI 中的矩阵将根据所选月份进行筛选(左侧视觉对象)。 当在Matrix中选择一月时,在扩展位置R100时,1月6日,1月27日有正确的值。但我不必显示 1 月 13 日和 1 月 21 日,因为这些日期没有安排任何会议。我怎样才能实现它?

对于 Del Paso 地点,我不必显示任何 1 月日期,因为在这些日期这些地点没有发生任何会话。

Sample Fact Data

PowerBI Image

SSAS Tabular Model Relationships

January

June

SSAS 2017、PBI Sep 2019 版本。

Power BI 报表的数据源来自 SSAS 服务器。

谢谢,

Vamsi

【问题讨论】:

    标签: powerbi dax ssas-tabular


    【解决方案1】:

    矩阵仅在行有结果时才显示行。你可能会想:它是 0,所以没有结果。但这是错误的:0 也是一个有效的结果。为了删除该行,您必须确保结果为空,在数据库中也称为 NULL,在 DAX 中也称为 BLANK。

    由于您没有发布您的措施的 DAX,一些建议:

    • 删除源数据中的 0。不确定您是否有权访问数据,但您可以在 PowerQuery 或 SQL 中将 0 替换为空值/空白值。
    • 我们看不到源数据(事实表中的数据是什么样的?),但我猜这才是真正的“问题”所在。
    • 对度量进行调整。不是最漂亮的解决方案,但它确实有效。伪代码:
    VAR _Show = COUNT ( 'Fact'[ID] )
    RETURN
    IF ( _Show = 0 , BLANK(), _Show)
    

    但是,我们需要更多关于您的事实表中的数据以及您已经创建的度量的信息。


    编辑:

    您已将 BLANKS 替换为 0,并设置了“显示没有数据的项目”。那么上面的措施就没有用了。

    建议:

    • 关闭“显示没有数据的项目”!

    新措施:

    (假设 DimStatus[Description] 在列上

    # Count = 
    // Orginal Measure: Count Unique IDs
    VAR __COUNTROSTER = DISTINCTCOUNT('FactJobClubOrientation'[RosterID])
    
    // Second Measuse: Count Regardless of show or no show, to see if there was a session
    VAR __COUNTALLROSTER = CALCULATE(DISTINCTCOUNT('FactJobClubOrientation'[RosterID]), ALL('DimStatus'[Description]))
    
    RETURN
    // If there was a sesssion, show the measure with 0 instead of blanks
    IF ( __COUNTALLROSTER > 0 , IF ( ISBLANK(__COUNTROSTER) , 0 , __COUNTROSTER))
    

    第三个建议:

    如果没有显示,您想用 0 显示所有位置。我为 DimDate 添加了 ISINSCOPE 检查,以防止在折叠位置时显示 0。

    # Count = 
    // Orginal Measure: Count Unique IDs
    VAR __COUNTROSTER = DISTINCTCOUNT('FactJobClubOrientation'[RosterID])
    
    // Second Measuse: Count Regardless of show or no show, to see if there was a session
    VAR __COUNTALLROSTER = CALCULATE(DISTINCTCOUNT('FactJobClubOrientation'[RosterID]), ALL('DimStatus'[Description]))
    
    // Third: Show 0 for all locations, if there's no session.
    VAR __NOROSTER = IF ( NOT ISINSCOPE('DimDate'[SessionDate]) , CALCULATE( 0 , ALL(DimLocation)))
    
    RETURN
    // If there was a sesssion, show the measure with 0 instead of blanks
    IF ( __COUNTALLROSTER > 0 , IF ( ISBLANK(__COUNTROSTER) , 0 , __COUNTROSTER), __NOROSTER)
    

    【讨论】:

    • 嗨 TJ_ 感谢您的建议。 DAX (Measure): DistinctRosterCount:= IF(CALCULATE(DISTINCTCOUNT(FactJobClubOrientation[RosterID])) = BLANK(), 0, CALCULATE(DISTINCTCOUNT(FactJobClubOrientation[RosterID]))) 这是在矩阵中显示值的 DAX .我无法将 DAX 中的 0 替换为空白或 null,因为根据业务,即使某个位置的不同计数为 null,我也必须在 Power BI 中显示 0。所以我放置了你建议的 DAX,结果是空白而不是 0。但问题是如何显示 0 代替空白?
    • 需要更多有关数据的信息来帮助您。您可以从事实表中发布包含相关列的数据样本吗? ShowOrNoShowId、LocationID、SessionDateKey 和 RosterID?
    • 等一下:您是否打开了“显示没有数据的项目”并将 BLANKS() 替换为 0?
    • 是的,我右键单击并为 PBI 中的矩阵打开了“显示没有数据的项目”。我在主要问题中附加了示例事实表数据。
    • 谢谢,我已经更新了我的答案。问:柱子上有什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 2022-01-18
    • 2019-11-12
    • 2020-05-06
    • 2020-04-08
    • 1970-01-01
    相关资源
    最近更新 更多