Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powerbi 由关系和切片器筛选的度量值或列_Powerbi_Dax_Data Analysis_Dimensional Modeling_Slicers - Fatal编程技术网

Powerbi 由关系和切片器筛选的度量值或列

Powerbi 由关系和切片器筛选的度量值或列,powerbi,dax,data-analysis,dimensional-modeling,slicers,Powerbi,Dax,Data Analysis,Dimensional Modeling,Slicers,我有一个表Deals,其中有列[DealId],[Open Date Id],[Closed Date Id],其中最后两列就像Date表的外键,该表有[DateId]列 Power BI不允许我有两个活动的关系,因此其中一个处于非活动状态 现在我想创建一些视觉效果,指示在自定义时间范围内(使用切片器)打开和关闭的交易 我是如何试图解决的 最接近于此的解决方案是使用LOOKUPVALUE创建一个计算列,并将关闭和打开日期直接添加到Deals表中。用两个不同的切片器创建了两个不同的页面,但这远远不

我有一个表
Deals
,其中有列
[DealId]
[Open Date Id]
[Closed Date Id]
,其中最后两列就像
Date
表的外键,该表有
[DateId]

Power BI不允许我有两个活动的关系,因此其中一个处于非活动状态

现在我想创建一些视觉效果,指示在自定义时间范围内(使用切片器)打开和关闭的交易

我是如何试图解决的

最接近于此的解决方案是使用
LOOKUPVALUE
创建一个计算列,并将关闭和打开日期直接添加到Deals表中。用两个不同的切片器创建了两个不同的页面,但这远远不是我想要的解决方案


如何解决此问题?

在这种情况下,最简单的方法是通过复制日期表来实现角色扮演维度功能。Power BI engine不支持角色扮演维度,因此小表的解决方法只是复制它们,如中所述

在您的例子中,您可以使用

这将创建原始日期表的副本。然后,您可以创建关系,并且只有活动的关系。这种方式比一堆不活跃的关系更容易维持

实现此功能后,您可以构建:

从这个来源:


我不知道我将要说的内容是否适合您的需要,这取决于表的大小或由于其他度量而导致的数据模型的刚性。我认为最终重要的是理解你想要展示的东西的局限性。然而,我在这里回答了一些几乎相似的问题:

据我所知,您有两张类似的表格:

Deals = {[DealID] [OpenDate] [CloseDate] [Quantity] [Price] ...}
Dates = {[Date] [MonthName] [MonthNumber] [Year] ...}
您希望根据两种关系筛选交易

USERELATIONSHIP (Dates [Date], Deals [OpenDate])
USERELATIONSHIP (Dates [Date], Deals [CloseDate])
我不打算讨论复制日期表的选项,因为它以前是使用两个切片器覆盖的

但是,如果模型的特性允许我使用具有两种关系(一种是活动的,另一种是非活动的)的表,而可视化使用的是不相关表的内容,该怎么办

让我们将新的不相关表定义为:

HarvestingDates = {[Date] [MonthName] [MonthNumber] [Year] ...}
我想达到的目标是:

从这样一个模型:

我没有选择开始日期和结束日期,而是选择与模型无关的日期范围,与交易相关的上下文来自度量。例如:

打开的交易:在特定日期范围内打开并通过可视化进行汇总的所有交易

HOpenedDeals: =
CALCULATE(
    COUNTROWS(Deals), 
        TREATAS(
        VALUES(HarvestingDate[Date]),Dates[Date]
        )
)
HClosedDeals:=
CALCULATE(
    COUNTROWS(Deals),
    USERELATIONSHIP(Dates[Date],Deals[CloseDate]),
    TREATAS(VALUES(HarvestingDate[Date]),Dates[Date])
)
已完成交易:在特定日期范围内完成并通过可视化进行汇总的所有交易

HOpenedDeals: =
CALCULATE(
    COUNTROWS(Deals), 
        TREATAS(
        VALUES(HarvestingDate[Date]),Dates[Date]
        )
)
HClosedDeals:=
CALCULATE(
    COUNTROWS(Deals),
    USERELATIONSHIP(Dates[Date],Deals[CloseDate]),
    TREATAS(VALUES(HarvestingDate[Date]),Dates[Date])
)
未结交易和已结交易:同一日期范围内的所有未结交易和已结交易由可视化汇总

HOpened&Closed := 
VAR TotalRow= SUMMARIZE(HarvestingDate,HarvestingDate[Year],HarvestingDate[MonthName])
VAR CurrentDates=VALUES(HarvestingDate[Date])
VAR Result=
ADDCOLUMNS(TotalRow, "Count",
VAR CurrentMonthName= {CALCULATE(VALUES(HarvestingDate[MonthName]))}
VAR CurrentYear= {CALCULATE(VALUES(HarvestingDate[Year]))}
RETURN
COUNTROWS(INTERSECT(
                CALCULATETABLE(Deals,
                USERELATIONSHIP(Dates[Date],Deals[CloseDate]),
                TREATAS(CurrentMonthName, Dates[MonthName]),
                TREATAS(CurrentYear, Dates[Year]),
                TREATAS(CurrentDates, Dates[Date])
                ),
                CALCULATETABLE(Deals,
                TREATAS(CurrentMonthName, Dates[MonthName]),
                TREATAS(CurrentYear, Dates[Year]),
                TREATAS(CurrentDates, Dates[Date])
                )
                )))
RETURN SUMX(Result,[Count])
HO&NOTC := 
VAR TotalRow= SUMMARIZE(HarvestingDate,HarvestingDate[Year],HarvestingDate[MonthName])
VAR CurrentDates=VALUES(HarvestingDate[Date])
VAR Result=
ADDCOLUMNS(TotalRow, "Count",
VAR CurrentMonthName= {CALCULATE(VALUES(HarvestingDate[MonthName]))}
VAR CurrentYear= {CALCULATE(VALUES(HarvestingDate[Year]))}
RETURN
COUNTROWS(EXCEPT(
                CALCULATETABLE(Deals,
                TREATAS(CurrentMonthName, Dates[MonthName]),
                TREATAS(CurrentYear, Dates[Year]),
                TREATAS(CurrentDates, Dates[Date])
                ),
                CALCULATETABLE(Deals,
                USERELATIONSHIP(Dates[Date],Deals[CloseDate]),
                TREATAS(CurrentMonthName, Dates[MonthName]),
                TREATAS(CurrentYear, Dates[Year]),
                TREATAS(CurrentDates, Dates[Date])
                )
                )))
RETURN SUMX(Result,[Count])
打开和未关闭的交易:通过可视化汇总相同日期范围内的所有打开和未关闭的交易

HOpened&Closed := 
VAR TotalRow= SUMMARIZE(HarvestingDate,HarvestingDate[Year],HarvestingDate[MonthName])
VAR CurrentDates=VALUES(HarvestingDate[Date])
VAR Result=
ADDCOLUMNS(TotalRow, "Count",
VAR CurrentMonthName= {CALCULATE(VALUES(HarvestingDate[MonthName]))}
VAR CurrentYear= {CALCULATE(VALUES(HarvestingDate[Year]))}
RETURN
COUNTROWS(INTERSECT(
                CALCULATETABLE(Deals,
                USERELATIONSHIP(Dates[Date],Deals[CloseDate]),
                TREATAS(CurrentMonthName, Dates[MonthName]),
                TREATAS(CurrentYear, Dates[Year]),
                TREATAS(CurrentDates, Dates[Date])
                ),
                CALCULATETABLE(Deals,
                TREATAS(CurrentMonthName, Dates[MonthName]),
                TREATAS(CurrentYear, Dates[Year]),
                TREATAS(CurrentDates, Dates[Date])
                )
                )))
RETURN SUMX(Result,[Count])
HO&NOTC := 
VAR TotalRow= SUMMARIZE(HarvestingDate,HarvestingDate[Year],HarvestingDate[MonthName])
VAR CurrentDates=VALUES(HarvestingDate[Date])
VAR Result=
ADDCOLUMNS(TotalRow, "Count",
VAR CurrentMonthName= {CALCULATE(VALUES(HarvestingDate[MonthName]))}
VAR CurrentYear= {CALCULATE(VALUES(HarvestingDate[Year]))}
RETURN
COUNTROWS(EXCEPT(
                CALCULATETABLE(Deals,
                TREATAS(CurrentMonthName, Dates[MonthName]),
                TREATAS(CurrentYear, Dates[Year]),
                TREATAS(CurrentDates, Dates[Date])
                ),
                CALCULATETABLE(Deals,
                USERELATIONSHIP(Dates[Date],Deals[CloseDate]),
                TREATAS(CurrentMonthName, Dates[MonthName]),
                TREATAS(CurrentYear, Dates[Year]),
                TREATAS(CurrentDates, Dates[Date])
                )
                )))
RETURN SUMX(Result,[Count])
试验


我相信这是可以改进的,但正如我在开始时所说,这只是一个想法。干杯

谢谢大家!!所以,没有办法为关闭和打开的日期id都使用一个日期切片器?也许有一种方法可以使一个切片器依赖于另一个切片器,并使一个切片器不可见(如果可能的话)?我不知道这是否可能,因为我是PowerBi新手:)这是个好问题。我一直使用切片器只对一个字段进行切片,所以我能说的是,我现在想不出一种方法来进行切片。也许这是可能的,但不是没有一些数据重新排列-额外的列等,但即使在这种情况下,我只是不知道现在。