繁体   English   中英

如何在Power BI中使用SQL时态表

[英]How to use SQL temporal tables in Power BI

我正在构建一个Power BI报表,该报表使用一组SQL时态表作为源。 我想为用户提供从日期切片器中选择月份的机会,并基于该选择,报告将显示该日期的有效数据。

SQL通过使用允许查询的系统版本表来实现此目的,例如

SELECT * from table FOR SYSTEM_TIME BETWEEN 'date1' and 'date2'

它将返回表中的所有有效值,就好像查询在这些日期之间运行一样。

在Power BI中找不到有关如何使用时态表的任何文档。

在Power BI中执行此操作的最佳方法是什么?

在此先感谢您的帮助

我最近刚做过。 @RADO是正确的; 对于导入模式,在Power BI表中每个日期(对于您而言,一个月)都有行。 所有工作都在SQL中进行。

首先,我创建了一个内联(可)表值函数,该函数接受SYSTEM_TIME AS OF子句的datetime2并根据需要返回带有联接的所需结果集。

SELECT 
    header.*, 
    detail.*
FROM header FOR SYSTEM_TIME AS OF @utcTimeStamp AS header
LEFT JOIN detail FOR SYSTEM_TIME AS OF @utcTimeStamp AS detail ON detail.header_id = header.id ;

您必须调整@utcTimeStamp,以便为您提供适合日期或月份含义的瞬间。

--- Ajust to match your time period datatype
DECLARE @utcTimeStamp datetime2(3) = DATEADD(ms, -1, DATEADD(DAY, 1, CAST(@date AS datetime2(3)))) AT TIME ZONE 'Eastern Standard Time' AT TIME ZONE 'UTC';

然后,我创建了一个视图,将该功能与所需日期进行交叉应用。

当我发现查询视图花费了很长时间时,我创建了一个缓存表和SQL Agent作业,以插入从最后一个日期到昨天的结果(这确保了所有时区的昨天结束)。 如果您只需要每月的结果,则可能不需要此步骤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM