我正在构建一个Power BI报表,该报表使用一组SQL临时表作为源。我想为用户提供从日期切片器中选择月份的机会,并基于该选择,报告将显示该日期的有效数据。
SQL通过使用允许查询之类的系统版本表来允许此操作
SELECT * from table FOR SYSTEM_TIME BETWEEN 'date1' and 'date2'
这将返回表中的所有有效值,就像在两个日期之间运行查询一样。
在Power BI中找不到有关如何使用时态表的文档。
在Power BI中执行此操作的最佳方法是什么?
预先感谢您的帮助
答案 0 :(得分:0)
我最近刚刚这样做。 @RADO是正确的;对于导入模式,在Power BI表中每个日期(对于您而言,一个月)都有行。所有工作都在SQL中进行。
首先,我创建了一个内联(可)表值函数,该函数接受SYSTEM_TIME AS OF子句的datetime2并根据需要返回带有联接的所需结果集。
"persons": [
{
"name": "Adam",
"age": "20",
},
{
"name": "Bob",
"age": "21",
}, {
"name": "Christy",
"age": "22",
}
]
}
您必须调整@utcTimeStamp,以便为您提供适合日期或月份含义的瞬间。
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 ;
然后,我创建了一个视图,以将该功能与所需日期交叉应用。
当我发现查询视图花了很长时间时,我创建了一个缓存表和SQL Agent作业以插入从最后一个日期到昨天的结果(以确保昨天在所有时区都有效) 。如果您只需要每月的结果,则可能不需要此步骤。