Forum Discussion

joerfleming's avatar
joerfleming
Frequent Visitor
1 year ago
Solved

Separating data from rows into columns for each source txt file

I am using Power Query Editor to read multiple txt files which organizes the data into rows. I am trying to separate the data into columns for each source txt file. Below you will see the source file...
  • joerfleming's avatar
    1 year ago

    I was able to figure it out:

    let
    Source = Folder.Files("C:\Users\joerf\Downloads\Test TXT"),
    #"Filtered Hidden Files1" = Table.SelectRows(Source, each [Attributes]?[Hidden]? <> true),
    #"Invoke Custom Function1" = Table.AddColumn(#"Filtered Hidden Files1", "Transform File (2)", each #"Transform File (2)"([Content])),
    #"Renamed Columns1" = Table.RenameColumns(#"Invoke Custom Function1", {"Name", "Source.Name"}),
    #"Removed Other Columns1" = Table.SelectColumns(#"Renamed Columns1", {"Source.Name", "Transform File (2)"}),
    #"Expanded Table Column1" = Table.ExpandTableColumn(#"Removed Other Columns1", "Transform File (2)", Table.ColumnNames(#"Transform File (2)"(#"Sample File (2)"))),
    #"Changed Type" = Table.TransformColumnTypes(#"Expanded Table Column1",{{"Source.Name", type text}, {"Column1", type text}, {"Column2", type text}}),
    #"Filtered Rows" = Table.SelectRows(#"Changed Type", each Text.StartsWith([Column1], "BPR") or Text.StartsWith([Column1], "TRN") or Text.StartsWith([Column1], "N1*PR")),
    #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Column2"}),
    #"Inserted First Characters" = Table.AddColumn(#"Removed Columns", "First Characters", each Text.Start([Column1], 4), type text),
    #"Reordered Columns" = Table.ReorderColumns(#"Inserted First Characters",{"Source.Name", "First Characters", "Column1"}),
    #"Added Index" = Table.AddIndexColumn(#"Reordered Columns", "Index", 1, 1, Int64.Type),
    #"Added Custom" = Table.AddColumn( #"Added Index","rank",each Table.RowCount( Table.SelectRows(#"Added Index",(x)=>x[Source.Name]=[Source.Name] and x[First Characters]=[First Characters] and x[Index]<=[Index]))),
    #"Grouped Rows" = Table.Group(#"Added Custom", {"Source.Name", "rank"}, {{"Count", each Text.Combine([Column1],","), type text}}),
    #"Removed Columns1" = Table.RemoveColumns(#"Grouped Rows",{"rank"}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Removed Columns1", "Count", Splitter.SplitTextByDelimiter("~", QuoteStyle.None), {"Count.1", "Count.2", "Count.3", "Count.4"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Count.1", type text}, {"Count.2", type text}}),
    #"Filtered Rows1" = Table.SelectRows(#"Changed Type1", each Text.StartsWith([Count.1], "BPR*I")),
    #"Reordered Columns1" = Table.ReorderColumns(#"Filtered Rows1",{"Source.Name", "Count.2", "Count.3", "Count.1", "Count.4"}),
    #"Renamed Columns" = Table.RenameColumns(#"Reordered Columns1",{{"Count.1", "Bank Transaction"}}),
    #"Reordered Columns2" = Table.ReorderColumns(#"Renamed Columns",{"Source.Name", "Count.3", "Count.2", "Bank Transaction", "Count.4"}),
    #"Renamed Columns2" = Table.RenameColumns(#"Reordered Columns2",{{"Count.3", "Insurance"}, {"Count.2", "Transaction"}}),
    #"Removed Columns2" = Table.RemoveColumns(#"Renamed Columns2",{"Count.4"}),
    #"Replaced Value" = Table.ReplaceValue(#"Removed Columns2","BPR*I*","",Replacer.ReplaceText,{"Bank Transaction"}),
    #"Split Column by Delimiter1" = Table.SplitColumn(#"Replaced Value", "Bank Transaction", Splitter.SplitTextByDelimiter("*C*", QuoteStyle.None), {"Bank Transaction.1", "Bank Transaction.2"}),
    #"Changed Type2" = Table.TransformColumnTypes(#"Split Column by Delimiter1",{{"Insurance", type text}, {"Bank Transaction.1", type number}, {"Bank Transaction.2", type text}}),
    #"Replaced Value1" = Table.ReplaceValue(#"Changed Type2",",TRN*1*","",Replacer.ReplaceText,{"Transaction"}),
    #"Replaced Value2" = Table.ReplaceValue(#"Replaced Value1",",N1*PR*","",Replacer.ReplaceText,{"Insurance"}),
    #"Reordered Columns3" = Table.ReorderColumns(#"Replaced Value2",{"Source.Name", "Bank Transaction.2", "Transaction", "Insurance", "Bank Transaction.1"}),
    #"Renamed Columns3" = Table.RenameColumns(#"Reordered Columns3",{{"Bank Transaction.1", "Bank Transaction Amount"}}),
    #"Changed Type3" = Table.TransformColumnTypes(#"Renamed Columns3",{{"Bank Transaction Amount", Currency.Type}}),
    #"Split Column by Position" = Table.SplitColumn(#"Changed Type3", "Bank Transaction.2", Splitter.SplitTextByPositions({0, 8}, true), {"Bank Transaction.2.1", "Bank Transaction.2.2"}),
    #"Changed Type4" = Table.TransformColumnTypes(#"Split Column by Position",{{"Bank Transaction.2.1", type text}, {"Bank Transaction.2.2", type date}}),
    #"Reordered Columns4" = Table.ReorderColumns(#"Changed Type4",{"Source.Name", "Bank Transaction.2.1", "Transaction", "Insurance", "Bank Transaction.2.2", "Bank Transaction Amount"}),
    #"Renamed Columns4" = Table.RenameColumns(#"Reordered Columns4",{{"Bank Transaction.2.2", "Transaction Date"}, {"Bank Transaction.2.1", "Bank Transaction Type"}}),
    #"Split Column by Delimiter2" = Table.SplitColumn(#"Renamed Columns4", "Transaction", Splitter.SplitTextByDelimiter("*", QuoteStyle.Csv), {"Transaction.1", "Transaction.2"}),
    #"Changed Type5" = Table.TransformColumnTypes(#"Split Column by Delimiter2",{{"Transaction.1", type text}, {"Transaction.2", Int64.Type}}),
    #"Renamed Columns5" = Table.RenameColumns(#"Changed Type5",{{"Transaction.1", "TRN*1*"}}),
    #"Sorted Rows" = Table.Sort(#"Renamed Columns5",{{"Transaction Date", Order.Descending}})
    in
    #"Sorted Rows"