Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more

Reply
roncruiser
Post Patron
Post Patron

Insert Rows for Missing Values of a Column

Need help.

I was given a table that has missing values in the sequence column.
I would like to expand the table with the missing values in the sequence column,
and copy the values from the previous sequence down to fill the new rows.

IDSequenceSubSub1Value
013001
015001
018001
020001
022001
012011
015011
017011
018011
020011


Realistically, it should look like this.  The yellow highlights are the newly added rows.

roncruiser_0-1729733060384.png

I'm trying to do this in Power Query but have not had any success so far. 
Is there anyway to do this dynamically with Power Query?
Need some expert help with this.

Thanks!

2 ACCEPTED SOLUTIONS
roncruiser
Post Patron
Post Patron

@ryan_mayu 
This works!

But since I have millions of row in the table, is there a way to do it in a single query without the merging of tables?
I believe the merge will slow load time.

Maybe a group within a group, then expand out to reveal the full sequence.
Something like this, but haven't got it to work yet.:

roncruiser_0-1729743792787.png

 

View solution in original post

I think we have to merge tables However, this time we don't create a new table

 

let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlDSUTI0BhIGUGyoFKsDFTbFLmyBVdjIALuwEXZDjOBCWK1EEzbHLmyBVdjIAFU4FgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, Sequence = _t, Sub = _t, Sub1 = _t, Value = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Sequence", Int64.Type}}),
Custom1 = Table.Group(#"Changed Type" , {"Sub1"}, {{"column", each {List.Min([Sequence])..List.Max([Sequence]) }}}),
Table = Table.ExpandListColumn(Custom1, "column"),
Custom2 = Table.NestedJoin(Table, {"Sub1", "column"}, #"Changed Type", {"Sub1", "Sequence"}, "Table", JoinKind.LeftOuter),
#"Expanded Table" = Table.ExpandTableColumn(Custom2, "Table", {"ID", "Sub", "Value"}, {"ID", "Sub", "Value"}),
#"Filled Down" = Table.FillDown(#"Expanded Table",{"ID", "Sub", "Value"}),
#"Sorted Rows" = Table.Sort(#"Filled Down",{{"Sub1", Order.Ascending}, {"column", Order.Ascending}})
in
#"Sorted Rows"

 

pls see the attachment below





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




View solution in original post

5 REPLIES 5
roncruiser
Post Patron
Post Patron

@ryan_mayu 
This works!

But since I have millions of row in the table, is there a way to do it in a single query without the merging of tables?
I believe the merge will slow load time.

Maybe a group within a group, then expand out to reveal the full sequence.
Something like this, but haven't got it to work yet.:

roncruiser_0-1729743792787.png

 

I think we have to merge tables However, this time we don't create a new table

 

let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlDSUTI0BhIGUGyoFKsDFTbFLmyBVdjIALuwEXZDjOBCWK1EEzbHLmyBVdjIAFU4FgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, Sequence = _t, Sub = _t, Sub1 = _t, Value = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Sequence", Int64.Type}}),
Custom1 = Table.Group(#"Changed Type" , {"Sub1"}, {{"column", each {List.Min([Sequence])..List.Max([Sequence]) }}}),
Table = Table.ExpandListColumn(Custom1, "column"),
Custom2 = Table.NestedJoin(Table, {"Sub1", "column"}, #"Changed Type", {"Sub1", "Sequence"}, "Table", JoinKind.LeftOuter),
#"Expanded Table" = Table.ExpandTableColumn(Custom2, "Table", {"ID", "Sub", "Value"}, {"ID", "Sub", "Value"}),
#"Filled Down" = Table.FillDown(#"Expanded Table",{"ID", "Sub", "Value"}),
#"Sorted Rows" = Table.Sort(#"Filled Down",{{"Sub1", Order.Ascending}, {"column", Order.Ascending}})
in
#"Sorted Rows"

 

pls see the attachment below





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




@ryan_mayu 
Both solutions worked out!  Thank You.

The second solution is better suited so as not to create a second table external to the initial query.
Though, for better efficiency, the internal table will need to be stored in a table buffer (Table.Buffer) since it's being used as a reference table.

I'm still trying to see if there's a way to do this without the internal merge.  Maybe there's a way?
If not, your solution is solid.  Thank You for your time and help.

you are welcome.





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




ryan_mayu
Super User
Super User

you can try this

 

let
Source = Table,
#"Grouped Rows" = Table.Group(Source, {"Sub1"}, {{"column", each {List.Min([Sequence])..List.Max([Sequence]) }}}),
#"Expanded column" = Table.ExpandListColumn(#"Grouped Rows", "column"),
#"Merged Queries" = Table.NestedJoin(#"Expanded column", {"Sub1", "column"}, Table, {"Sub1", "Sequence"}, "Table", JoinKind.LeftOuter),
#"Expanded Table" = Table.ExpandTableColumn(#"Merged Queries", "Table", {"ID", "Sub", "Value"}, {"ID", "Sub", "Value"}),
#"Filled Down" = Table.FillDown(#"Expanded Table",{"ID", "Sub", "Value"})
in
#"Filled Down"

 

11.PNG

 

pls see the attachment below





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




Helpful resources

Announcements
Power BI DataViz World Championships

Power BI Dataviz World Championships

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!

December 2025 Power BI Update Carousel

Power BI Monthly Update - December 2025

Check out the December 2025 Power BI Holiday Recap!

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.