Forum Discussion
jwb3d
4 months agoFrequent Visitor
Add duplicate row based on column
I have a database with steps applied to it on Power Query, I would like Add the number of rows to my table based on the "phaseCount" . Example of what I want with a before and after: before fid...
- 4 months ago
Hi jwb3d , from your query, I beleive you need to duplicate same rows if the Phase count is more than one value .
IP :
Use Table .Repeat fundtion to handle this scenariolet Source = #"IP Table", // -> Source table ColNames = Table.ColumnNames(Source), // Nest each row as a repeated table AddedRepeated = Table.AddColumn( Source, "RepeatedRows", each Table.Repeat( Table.FromRecords({ _ }), [phaseCount] ) ), // the id is causing error so drop originals BEFORE expanding to avoid duplicate field error OnlyNested = Table.SelectColumns(AddedRepeated, {"RepeatedRows"}), Expanded = Table.ExpandTableColumn( OnlyNested, "RepeatedRows", ColNames ), #"Added Index" = Table.AddIndexColumn(Expanded, "Index", 1, 1, Int64.Type) in #"Added Index"
OP:
Sample :
Row Expand.pbix
Thanks
If you found this helpful, please consider giving it a kudo and marking it as the accepted solution — it goes a long way in helping others facing the same issue.
For more Power BI tips and discussions, let’s connect on LinkedIn:
https://www.linkedin.com/in/natarajan-manivasagan
Cheers! - 4 months ago
if you want to add duplicate rows, you can add a list.
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjIwtDAwMDcyUtJRMgZiRydnIGlgrOubWKRrZAZku6SWZSanGirF6oBVm5hamJoYAsVB2BGrWiOYWgsDQyNjA6haJ6xqjcFqDQ0NjIwMLI0sgOIgl+BwhIlSbCwA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [fid = _t, phaseCount = _t, phase = _t, extractDate = _t, deviceName = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"fid", Int64.Type}, {"phaseCount", Int64.Type}, {"phase", type text}, {"extractDate", type date}, {"deviceName", type text}}), #"Replaced Value" = Table.ReplaceValue(#"Changed Type",null,null,(old,new,z)=>List.Repeat({old}, Text.Length(old)),{"phase"}), #"Expanded {0}" = Table.ExpandListColumn(#"Replaced Value", "phase") in #"Expanded {0}" - 4 months ago
pls try
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjIwtDAwMDcyUtJRMgZiRydnIGlgrOubWKRrZAZku6SWZSanGirF6oBVm5hamJoYAsVB2BGrWiOYWgsDQyNjA6haJ6xqjcFqDQ0NjIwMLI0sgOIgl+BwhIlSbCwA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [fid = _t, phaseCount = _t, phase = _t, extractDate = _t, deviceName = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"phaseCount", type number}}), lst = Table.ColumnNames(#"Changed Type"), from = List.TransformMany(Table.ToRows(#"Changed Type"), (x)=> {1..x{1}},(x,y)=>x), tb = Table.FromRows(from,lst) in tb
Ahmedx
4 months agoSuper User
This is optimized code, try it.
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjIwtDAwMDcyUtJRMgZiRydnIGlgrOubWKRrZAZku6SWZSanGirF6oBVm5hamJoYAsVB2BGrWiOYWgsDQyNjA6haJ6xqjcFqDQ0NjIwMLI0sgOIgl+BwhIlSbCwA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [fid = _t, phaseCount = _t, phase = _t, extractDate = _t, deviceName = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"phaseCount", type number}}),
from = Table.FromRecords( List.TransformMany(
Table.ToRecords(#"Changed Type"),(x)=> {1.. Record.FieldValues(x){1}},(x,y)=>x))
in
from