【发布时间】:2023-02-26 12:12:19
【问题描述】:
我正在尝试在包含多个值的这两个日期列之间进行计算。我曾尝试按字符数 (10) 重复使用拆分列。我的数据在一列中包含最多 4 或 5 个日期的日期值,但是我无法找到一种方法来按照它们的顺序执行 2 列。一旦我将它们分成几行,我就想使用 group by 。
【问题讨论】:
标签: powerbi dax powerquery
我正在尝试在包含多个值的这两个日期列之间进行计算。我曾尝试按字符数 (10) 重复使用拆分列。我的数据在一列中包含最多 4 或 5 个日期的日期值,但是我无法找到一种方法来按照它们的顺序执行 2 列。一旦我将它们分成几行,我就想使用 group by 。
【问题讨论】:
标签: powerbi dax powerquery
你不说你想计算什么。但我建议首先进行 Group By,因为扩展结果会更简单:
let
Source = Excel.CurrentWorkbook(){[Name="Table13"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", Int64.Type}, {"Admit Date", type text}, {"Discharge Date", type text}}),
//Group by ID
#"Grouped Rows" = Table.Group(#"Changed Type", {"ID"}, {
//create new table of individual dates from each subgroup
{"Dates", (t)=>
let
#"Split Admit Dates" = List.Transform(t[Admit Date], each
Splitter.SplitTextByLengths(List.Repeat({10}, Text.Length(_)/10))(_)),
#"Split Discharge Dates" = List.Transform(t[Discharge Date], each
Splitter.SplitTextByLengths(List.Repeat({10}, Text.Length(_)/10))(_)),
#"Result" = Table.FromColumns(
{List.Combine(#"Split Admit Dates")}
& {List.Combine(#"Split Discharge Dates")},
{"Admit Date", "Discharge Date"})
in
#"Result"}}),
//Expand the subtables and set the data types
#"Expanded Dates" = Table.ExpandTableColumn(#"Grouped Rows", "Dates", {"Admit Date", "Discharge Date"}),
#"Set Data Types" = Table.TransformColumnTypes(#"Expanded Dates", {
{"Admit Date", type date},
{"Discharge Date", type date}})
in
#"Set Data Types"
【讨论】:
你可以在 powerquery 中试试这个
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Added Custom" = Table.AddColumn(Source, "Custom", each Text.Repeat(Text.PadStart(Text.From([ID]),10),Text.Length([Admit Date])/10)),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"ID"}),
#"Transposed Table" = Table.Transpose(#"Removed Columns"),
#"Merged Columns" = Table.CombineColumns(#"Transposed Table",{"Column1", "Column2", "Column3"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Merged"),
ColumnToSplitTo=List.Transform({1 .. List.Max (List.Transform(#"Merged Columns"[Merged], each Text.Length(_)))/10}, each "Column."&Text.From(_)),
#"Split Column by Position" = Table.SplitColumn(#"Merged Columns", "Merged", Splitter.SplitTextByRepeatedLengths(10), ColumnToSplitTo),
#"Transposed Table1" = Table.Transpose(#"Split Column by Position"),
#"Lowercased Text" = Table.TransformColumns(#"Transposed Table1",{{"Column3", each Text.Trim(_), type text}})
in #"Lowercased Text"
【讨论】: