矩阵的 Power BI 过滤问题

Power BI filtering issues with matrix

谁能帮帮我。

见附件。

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

对于德尔帕索地点,我不必显示任何 1 月的日期,因为这些地点在这些日期没有举行任何会议。

Sample Fact Data

PowerBI Image

SSAS Tabular Model Relationships

January

June

SSAS 2017,PBI 2019 年 9 月版本。

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

谢谢,

瓦姆西

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

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

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

但是,同样,我们需要更多关于您事实中的数据 table 和您已经创建的度量的信息。


编辑:

您已经用 0 替换了 BLANKS,并设置了 'Show items with no data'。那么上面的措施就没有用了。

建议:

  • 关闭 'Show items with no data'!

新措施:

(假设 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)