我正在撰写Power BI的报告 . 我的数据模型中的一个表收集传感器数据 . 它包含以下列:
-
Serial (int),即123456789
-
Timestamp (日期时间),即12/20/2016 12:04:23 PM
-
Reading (十进制)即123.456
每隔几分钟添加一条新记录,当前读数来自传感器 .
Power BI会自动为日期时间列创建层次结构,其中包括年,季度,月和日 . 因此,当您在报表中添加视觉效果时,可以轻松深入查看每个级别 .
我想在层次结构中包含数据的“时间”部分,以便您可以在“日期”之后再向下钻取一个级别,并查看该期间的详细读数 .
我已经设置了一个Date表,使用CALENDARAUTO()函数,添加了所有相应的列,并将其与我的Readings表相关联,以便按日期汇总数据 - 效果很好 . 但它不包括“时间”维度 .
我查看了以下SO问题,但他们没有帮助:
Time-based drilldowns in Power BI powered by Azure Data Warehouse
Creating time factors in PowerBI
我也发现了这篇文章,但令人困惑:
Power BI Date & Time Dimension Toolkit
有任何想法吗?
谢谢!
3 回答
您需要单独的日期和时间表 . 您不希望将时间放入日期表中,因为时间每天都在重复 .
时间维度与日期维度是相同的主体,除了代替每天的行,每分钟或每秒都会有一行(取决于您想要的精确度 - 我不建议包括第二行除非你绝对需要它,因为它会大大增加你需要的行数 - 影响性能) . 时间表中没有提及日期 .
例如 .
我包含一个时间/文本列,因为Power BI习惯于将1899年的日期添加到时间数据类型中 . 如果它们对您有帮助,您可以添加其他列 .
在事实表中,您需要将日期时间列拆分为单独的日期和时间列,以便可以将日期连接到日期表和时间表的时间 . 时间可能需要转换为最接近的圆形分钟或秒,以便数据中的每次都对应于时间表中的一行 .
值得保留但隐藏数据中的原始日期时间字段,以防您以后想要计算跨越天数的持续时间 .
在Power BI中,您可以在轴上的月/日属性下添加时间属性(或小时(和分钟)属性),以创建可以从年>季度>月>天>小时>钻取的柱形图>分钟 . Power BI并不关心属性来自不同的表 .
您可以在此处详细了解时间维度:http://www.kimballgroup.com/2004/02/design-tip-51-latest-thinking-on-time-dimension-tables/
希望这可以帮助 .
不幸的是,我无法对之前的答案发表评论,所以我必须将其作为单独的答案添加:
是的,有一种方法可以自动生成日期和时间表 . 这是我在报告中使用的一些示例代码:
只需将其粘贴到空查询中即可 . 代码使用一个名为startDate的参数,因此您需要确保具有类似的内容 .
这是时间表的片段:
如果您在事实表中使用DateKey和TimeKey(如第一个答案中建议的那样),您可以通过简单地将时间元素放在日期元素下面的像这样的date-time-hierarchy中来轻松生成日期/时间层次结构 .
我的方法是使用给定的公式创建新列:
这将创建一个新列,现在您可以使用your-datetime-column选择它以创建向下钻取效果 .