Forum Discussion
Power Query Tables
- 8 months ago
Hi M_SBS_6,
Unfurtunelly we don´t have a sample data to teste, but please try it:
- Load the entire sheet (not just a single table).
- In the Power Query editor:
- Identify the column where the value "test errors" appears.
- Apply logic to keep all rows from that point onwards and exclude the rest.
- This can be done using an index and conditional filtering
Input Steps
# Add an index column = Table.AddIndexColumn(PreviousStep, "Index", 0, 1, Int64.Type) # Find the position of the row where Column1 = "test errors": Position = Table.PositionOf(PreviousStep, [Column1 = "test errors"]) # Skip all rows above that position: = Table.Skip(PreviousStep, Position)If this response was helpful in any way, I’d gladly accept a 👍much like the joy of seeing a DAX measure work first time without needing another FILTER.
Please mark it as the correct solution. It helps other community members find their way faster (and saves them from another endless loop 🌀.
- 8 months ago
Hi M_SBS_6
Assuming each month section has its own header, identify the row position of that header after the top table and use that index to extract the corresponding rows. If the monthly sections share the same header as the top table, instead locate the first blank or null row—whichever applies—provided that column values do not contain nulls.
Sample code:
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("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", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Segment = _t, Country = _t, #"30/09/2013" = _t, #"31/10/2013" = _t, #"30/11/2013" = _t, #"31/12/2013" = _t, #"31/01/2014" = _t, #"28/02/2014" = _t, #"31/03/2014" = _t, #"30/04/2014" = _t, #"31/05/2014" = _t, #"30/06/2014" = _t, #"31/07/2014" = _t, #"31/08/2014" = _t, #"30/09/2014" = _t, #"31/10/2014" = _t, #"30/11/2014" = _t, #"31/12/2014" = _t, #"Grand Total" = _t]), Custom1 = let tbl = Source, //name of the previous applied step NextHeader = List.PositionOf(tbl[Segment], "Segment") //tbl[Segment] --access the first column as a list then find the position of "segment" other than the header in Table.FirstN(tbl, NextHeader) in Custom1
Hi M_SBS_6,
Thank you for reaching out to the Microsoft Fabric Forum Community, and special thanks to danextian, PhilipTreacy , Ashish_Mathur and Idrissshatila for prompt and helpful responses.
Just following up to see if the Response provided by community members were helpful in addressing the issue. if the issue still persists Feel free to reach out if you need any further clarification or assistance.
Best regards,
Prasanna Kumar