【问题标题】:How to match consecutive dates contains multiple values and calculate the date per each calendar month如何匹配连续日期包含多个值并计算每个日历月的日期
【发布时间】:2023-02-26 12:12:19
【问题描述】:

我正在尝试在包含多个值的这两个日期列之间进行计算。我曾尝试按字符数 (10) 重复使用拆分列。我的数据在一列中包含最多 4 或 5 个日期的日期值,但是我无法找到一种方法来按照它们的顺序执行 2 列。一旦我将它们分成几行,我就想使用 group by 。

【问题讨论】:

    标签: powerbi dax powerquery


    【解决方案1】:

    你不说你想计算什么。但我建议首先进行 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"
    

    【讨论】:

      【解决方案2】:

      你可以在 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"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-15
        • 1970-01-01
        相关资源
        最近更新 更多