2017-01-11 27 views
0

我有一個表以下數據:我如何改變時間序列在電力BI進入時間倉

Time     Value 
2016-01-01 00:01:02 'a' 
2016-01-02 10:00:01 'b' 
2016-01-02 23:45:00 'c' 

但我希望能夠產生與常規次新表及相應的值,例如:

Data for 2016-01-02 by hour: 

Time     Value 
2016-02-02 00:00:00 'a' 
2016-02-02 01:00:00 'a' 
2016-02-02 02:00:00 'a' 
... 
2016-02-02 10:00:00 'a' 
2016-02-02 11:00:00 'b' 
2016-02-02 12:00:00 'b' 
... 
2016-02-02 22:00:00 'b' 
2016-02-02 23:00:00 'b' 

任何人都可以提供幫助嗎?

回答

1

這是怎麼回事?

let 
    src = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjIwNNM1MAQiBQMDKwNDKwMjJR2lRKVYHSQ5IwVDoBxIGiiXhC5nZGxlYgqUBsolK8XGAgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Time = _t, Value = _t]), 
    ch_type = Table.TransformColumnTypes(src,{{"Time", type datetime}}), 
    StartOfHour = Table.AddColumn(ch_type, "StartOfHour", each Time.StartOfHour([Time])), 
    i = Table.AddIndexColumn(StartOfHour, "i", 1, 1), 
    j = Table.AddIndexColumn(i, "j", 0, 1), 
    join = Table.NestedJoin(j,{"i"},j,{"j"},"NewColumn",JoinKind.LeftOuter), 
    t_expand = Table.ExpandTableColumn(join, "NewColumn", {"StartOfHour"}, {"NewColumn.StartOfHour"}), 
    dur = Table.AddColumn(t_expand, "StartOfHour_diff", each if [NewColumn.StartOfHour] is null then {[StartOfHour]} else List.Transform({0..Duration.Hours([NewColumn.StartOfHour]-[StartOfHour])-1}, (l)=>[StartOfHour]+#duration(0,l,0,0))), 
    del = Table.RemoveColumns(dur,{"Time", "StartOfHour", "i", "j", "NewColumn.StartOfHour"}), 
    l_expand = Table.ExpandListColumn(del, "StartOfHour_diff"), 
    rename = Table.RenameColumns(l_expand,{{"StartOfHour_diff", "Time"}}), 
    reorder = Table.ReorderColumns(rename,{"Time", "Value"}) 
in 
    reorder 

enter image description here

+0

不爲我工作 - 產出表中沒有遞增小時。 –

+0

@ByronRoss,我已經更新了我的答案,查看它 –