矩阵的 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)
谁能帮帮我。
见附件。
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)