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 - Fatal编程技术网

Powerbi 计算切片周期内仅部分的事件持续时间

Powerbi 计算切片周期内仅部分的事件持续时间,powerbi,dax,Powerbi,Dax,我们正在调查PowerBI的报告解决方案,它可以满足我们的许多需要。然而,我们需要能够对事件进行临时报告。每个事件都有一个开始日期和结束日期以及总秒数,并进行百分比计算等。这非常有效 但是我们的共同要求是指定一个开始日期和结束日期,我们希望考虑数据。许多事件将跨越所需周期的开始和结束,甚至在周期开始之前开始并超过结束。我们需要做的只是考虑在这一时期内发生的事件的一部分。 是否可以使用切片器定义开始/结束时间段,然后只包括为每个事件切片的时间段内的秒数 这将允许我们计算该期间内所有事件的总时间 更

我们正在调查PowerBI的报告解决方案,它可以满足我们的许多需要。然而,我们需要能够对事件进行临时报告。每个事件都有一个开始日期和结束日期以及总秒数,并进行百分比计算等。这非常有效

但是我们的共同要求是指定一个开始日期和结束日期,我们希望考虑数据。许多事件将跨越所需周期的开始和结束,甚至在周期开始之前开始并超过结束。我们需要做的只是考虑在这一时期内发生的事件的一部分。

是否可以使用切片器定义开始/结束时间段,然后只包括为每个事件切片的时间段内的秒数

这将允许我们计算该期间内所有事件的总时间

更新 我的表格由成千上万行组成,如

事件ID |车辆ID |状态ID |原因代码ID |开始日期时间|结束日期时间|总持续时间

我们需要查看每个事件在选定时间段(开始/结束)内的部分。然而,事件可以跨越时间段。如果一个事件的一部分超出了一个时间段,我们希望忽略这部分持续时间。如果整个事件在所选时间段之外,那么我们将忽略所有事件

例如,假设一项活动从2月1日开始,一直持续到7月1日。如果切片器的选定日期范围为1月1日至3月1日,则我只希望在总持续时间计算中包括2月1日至3月1日之间的时间

是否可以使用切片器定义开始/结束期间,然后 仅包括为每个项目切片的时段内的秒数 事件

是的,这是可能的。在Power BI中,有一个自定义的可视化功能,可用于过滤日期范围

您只需将模型中的日期列拖放到
时间线切片器
,即可过滤度量值

要安装它,请转到Gallery并在搜索框中搜索
timeline
,下载它并将其导入Power BI

如果您被DAX表达式所困扰,请在问题中包含SQL代码和示例模型

让我知道这是否有帮助

是否可以使用切片器定义开始/结束期间,然后 仅包括为每个项目切片的时段内的秒数 事件

是的,这是可能的。在Power BI中,有一个自定义的可视化功能,可用于过滤日期范围

您只需将模型中的日期列拖放到
时间线切片器
,即可过滤度量值

要安装它,请转到Gallery并在搜索框中搜索
timeline
,下载它并将其导入Power BI

如果您被DAX表达式所困扰,请在问题中包含SQL代码和示例模型


如果这有帮助,请告诉我。

您所要求的是可行的,但它的效果如何在很大程度上取决于表中的数据量

您可以使用DAX度量来计算在给定日期发生的任何事件的持续时间总和。您可以使用断开连接的日期表(2016年10月Power BI Desktop发行版包含内置数据切片器,允许您轻松选择范围)来完成此操作。有关这方面的更多信息,请单击此处:

然后,您将拥有一个计算持续时间总和的度量,并使用过滤器确保有问题的事件在切片器选择的日期范围内到达。关于问题的这一部分,这里有更多的细节:

但是,您要更进一步,因为您不希望对给定日期范围内的事件的整个持续时间求和-您只希望对给定日期范围内的持续时间求和

为此,必须根据选定的日期范围计算运行时每一行的持续时间。您可以通过使用SUMX(见下文)的度量来实现这一点,但是在大量记录(成千上万)上,计算速度将开始减慢

例如,如果您有一个名为date的断开连接的日期表,而您的事件表名为event,则可以使用以下度量值:

Filtered Duration =
CALCULATE (
    SUMX (
        Event,
        DATEDIFF (
            MAX ( MIN ( 'Date'[Date] ), Event[StartDateTime] ),
            MIN ( MAX ( 'Date'[Date] ), Event[EndDateTime] ),
            SECOND
        )
    ),
    FILTER (
        'Event',
        'Event'[StartDateTime] <= MAX ( 'Date'[Date] )
            && 'Event'[EndDateTime] >= MIN ( 'Date'[Date] )
    )
)
过滤持续时间=
算计(
萨姆克斯(
事件
DATEDIFF(
最大值(最小值(‘日期’[Date]),事件[StartDateTime]),
最小值(最大值('Date'[Date]),事件[EndDateTime]),
第二
)
),
滤器(
“事件”,
'事件'[StartDateTime]=MIN('Date'[Date])
)
)
MIN('Date'[Date])
在这种情况下,公式对应于所选日期范围内断开连接的日期表中的最早日期
MAX('Date'[Date])
对应于最新日期

最后一部分(过滤器)是说“只查看在选定范围内的日期发生的事件”。SUMX是说“对于每一行,做一个DATEDIFF”。DATEDIFF中的MAX表示“选择切片器中的第一个日期或事件的开始日期中的较晚者”。原因是,如果在日期切片器上选择15到20,并且事件从18日开始,那么您希望从18日开始计数。但是如果比赛从11号开始,你应该从15号开始计算。MIN与结束日期相反

如果事件完全在时间范围内,则它将计算从开始到结束的秒数。如果事件结束时间在选定的时间范围之后(例如),则它将计算从事件确切开始到选定结束日期午夜的秒数

请注意,因为我使用了日期表,所以您无法选择部分天数作为日期范围。您可以将其扩展为包含一个时间表,但它会变得更复杂(您需要一个单独的开始和结束时间表,然后在上面已经非常复杂的公式中说明该逻辑)

Wha