快速提示:Power BI和Analysis Services表格模型中具有秒级粒度的时间维

快速提示:Power BI和Analysis Services表格模型中具有秒级粒度的时间维
摄影者 马库斯·斯皮克(Markus Spiske)

我前阵子发表的文章 我展示了在Power BI和表格模型中创建时间维度的不同方法。我解释的时间维度以分钟为单位。在本文中,我向您展示了创建支持Seconds的Time维度的简单方法。因为这是一个快速提示,所以我仅向您展示如何获取“时间”维度中的“时间”和“ ID”列。如果您需要添加时间段(时间段) 查看此以获取更多详细信息.

时间维度(以秒为单位)与功率查询(M):

在高级编辑器中复制/粘贴以下代码,以在Power Query中生成“时间”维度:

let
Source = Table.FromList({1..86400}, Splitter.SplitByNothing()),
#"Renamed Columns" = Table.RenameColumns(Source,{{"Column1", "ID"}}),
#"时间 Column Added" = Table.AddColumn(#"Renamed Columns", "时间", each 时间.From(#datetime(1970,1,1,0,0,0)+#duration(0,0,0,[ID]))),
#"Changed Type" = Table.TransformColumnTypes(#"时间 Column Added",{{"ID", 在t64.Type}, {"时间", type time}})
in
#"Changed Type" 
功率查询中的时间维度

达克斯的时间维度(以秒为单位):

在Power BI或SSAS表格模型的新计算表中运行以下DAX表达式:

时间 in 达克斯 = ADDCOLUMNS(
                       通用系列(1, 86400, 1)
                        , "时间", 时间(0, 0, 0) + [Value]/86400
                        )
达克斯的时间维度(以秒为单位)

我之前有关时间维度的帖子 您会看到不同的DAX表达式,以分钟为单位创建时间维度。您可能会问为什么我在这里使用了不同的结构?嗯,原因是 时间 function has limitation 接受大于32,767的数字。因此,如果使用下面的DAX表达式,’ll get the “函数论证‘TIME’数据类型错误,或者结果太大或太小。” error message. This limitation in inherited from 时间 function in 电子表格.

函数论证'TIME'数据类型错误,或者结果太大或太小。
时间 in 达克斯 with Error = ADDCOLUMNS(
                                    通用系列(1, 86400, 1)
                                    , "时间", 时间(0, 0, [Value])
                                    )

这是秒中生成时间维度的另一种聪明方法。 在领英上:

时间 in 达克斯 Jeffrey Version = 通用系列(1/86400, 1, 时间(0, 0, 1))

使用T-SQL的时间维度(以秒为单位):

在SSMS中运行以下T-SQL脚本:

与CTE
AS(选择1个ID
全联盟
SELECT ID + 1
从cte
哪里ID< 86400)
选择编号
,CONVERT(CHAR(8),Dateadd(second,id,‘1900-01-01’), 108) [Time]
从cte
选项(最大递归0)

使用T-SQL以秒为单位的时间维度

全部做完!

有什么想法吗?在这里与我们分享:

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.