我有一个相当利基的问题,在PowerBI切片操作。
我希望根据两种不同的切割机过滤数据。
例如,我有两台不同的切割机;
的名单
我希望根据两个切割机之间的OR条件过滤PowerBI报告中显示的数据。
例如,我希望根据所有恐怖电影或昆汀·塔伦蒂诺导演的电影进行过滤。因此,这个列表将显示我的数据库中的所有恐怖电影和昆汀·塔伦蒂诺导演的所有电影(不一定是恐怖电影)。
我想我需要为此编写某种形式的DAX代码,但是通过实质性的搜索,我还没有遇到这个特定的问题。
如果你需要进一步的信息,请告诉我。
你好,Josh
发布于 2021-12-02 15:50:51
让我们假设您有一个名为IMDB的表,如下所示
| tbl-IMDB |
|--------------------------|---------|----------------------|
| Name | Genre | Director |
|--------------------------|---------|----------------------|
| The Shawshank Redemption | Drama | Frank Darabont |
| The Godfather | Crime | Francis Ford Coppola |
| The Dark Knight | Action | Christopher Nolan |
| 12 Angry Men | Drama | Sidney Lumet |
| Schindler's List | History | Steven Spielberg |
| Pulp Fiction | Crime | Quentin Tarantino |和另外两个切割机断开表,如下所示
| tbl-Director |
|----------------------|
| Director |
|----------------------|
| Frank Darabont |
| Francis Ford Coppola |
| Christopher Nolan |
| Sidney Lumet |
| Steven Spielberg |
| Quentin Tarantino |
|tbl-Genre|
|---------|
| Genre |
|---------|
| Drama |
| Crime |
| Action |
| History |数据模型如下所示

现在,如果我正确地理解了你的问题,当你从类型中选择{犯罪,行动}和导演的{Sidney,Spielberg}时,它应该返回5个实例;即只留下-The Shawshank救赎的第一个实例
为了达到这个目的,首先需要考虑到所有的切割机组合,以及它们能做什么。
a.所有的切片值都是在导演和类型切片器- DAX中选择的,以返回完整的表。
b.在导演和类型切片器- DAX中没有选择任何一个切片器值来返回完整的表,因为如果切片器中没有选择任何内容,DAX的默认行为就是返回完整的表。
c.在Genere中选择偏值,在导演中选择nothing/everything,反之亦然,- DAX将返回完整的表--例如,如果选择戏剧(2个实例)+在-> (6个实例)中选择nothing/everything,则总共6个实例。
d.在Genere和- DAX中都选择了部分值,以根据切片器的选择返回实例的添加-;例如,Drama=2+Sideney Lumet=1 =>总共有3个实例。
上面的逻辑可以合并到DAX度量中,如下所示
Measure =
VAR _genre = --- what are the genres selected from Genere Slicer and find them in IMDB tbl
MAXX (
FILTER ( IMDB, IMDB[Genre] IN ALLSELECTED ( Genre[Genre] ) ),
IMDB[Genre]
)
VAR _director = --- what are the directors selected from Director Slicer and find them in IMDB tbl
MAXX (
FILTER ( IMDB, IMDB[Director] IN ALLSELECTED ( Director[Director] ) ),
IMDB[Director]
)
VAR _genreCountALL = -- what are the total count of genere from Genre tbl regardless of the slicer seletion
CALCULATE ( COUNT ( Genre[Genre] ), ALL ( Genre ) )
VAR _directorCountALL = -- what are the total count of director from Director tbl regardless of the slicer seletion
CALCULATE ( COUNT ( Director[Director] ), ALL ( Director ) )
VAR _genreCountSELECT = -- what are the total count of genere from Genre tbl according to slicer seletion
COUNT ( Genre[Genre] )
VAR _directorCountSELECT = -- what are the total count of director from Director tbl according to slicer seletion
COUNT ( Director[Director] )
VAR _slice = --- if Genere and/Director slicer are both selected then return the max else in every other instances it is a full tbl
SWITCH (
TRUE (),
_genreCountALL <> _genreCountSELECT
&& _directorCountALL <> _directorCountSELECT,
CALCULATE (
MAX ( IMDB[Name] ),
FILTER ( IMDB, IMDB[Director] IN { _director } || IMDB[Genre] IN { _genre } )
),
CALCULATE ( MAX ( IMDB[Name] ) )
)
RETURN
_slice并设置一个可视级别过滤器,如下所示

该措施产生以下结果
nothing is selected - returns full table

partial values are selected in only one slicer- returns full table

partial values are selected in all available slicers - returns the sliced table

https://stackoverflow.com/questions/70177537
复制相似问题