我最近才这样做。@RADO 是正确的;对于导入模式,Power BI 表中的每个日期(或月份,在您的情况下)都有行。所有的工作都在 SQL 中。
首先,我创建了一个 inline(-able) 表值函数,该函数接受 SYSTEM_TIME AS OF 子句的 datetime2 并根据需要返回所需的带有 in 连接的结果集。
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 代理作业来插入从最后一个日期到昨天的结果(在确保昨天在我们所有时区中结束的时间)。如果您只需要每月结果,则可能不需要此步骤。