Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hi Guys,
I am using PQ in Excel.
i have 2 sources: t_Defaults and t_Customizations with composite Key: Topology&Tier&Function
As a base i am using t_Defaults but what i want to do this is:
1) If any row in t_Customizations is fullfilled (all columns, if one is empty - skip this row !) replace corresponding row (composite key) with corresponding composite key from t_Defaults.
2) If table t_Customizations is empty - just use t_Defaults.
Expected result:
So as you can see:
1) First row has been replaced from (Topo1&Tier1&Function1 key) t_Defaults with corresponding values from t_Customizations
2) Second row has been replaced from (Topo2&Tier2&Function2 key) t_Defaults with corresponding values from t_Customizations
3) third row from t_defaults was not replaced because key Topo3&Tier3&Function3 do not exists in t_Customizations table.
I am adding also my example Excel into google drive:
https://drive.google.com/file/d/1XhjPvYp8QANPFb1n-KJG5aMSnPz4SiZC/view?usp=sharing
Please help how to do this. I am starting my adventure with PQ currently.
Best Wishes,
Jacek
Solved! Go to Solution.
// t_Customizations
let
Source = Excel.CurrentWorkbook(){[Name="t_Customizations"]}[Content]
in
Source
// output
let
keys = List.FirstN(Table.ColumnNames(t_Customizations), 3),
acc = List.Accumulate(
Table.ToRecords(t_Customizations),
t_Defaults,
(s,c)=>let pos = Table.PositionOf(s, Record.SelectFields(c, keys), 0, keys)
in Table.ReplaceRows(s, pos, 1, {c})
)
in
acc
// t_Defaults
let
Source = Excel.CurrentWorkbook(){[Name="t_Defaults"]}[Content]
in
Source
// t_Customizations
let
Source = Excel.CurrentWorkbook(){[Name="t_Customizations"]}[Content]
in
Source
// output
let
keys = List.FirstN(Table.ColumnNames(t_Customizations), 3),
acc = List.Accumulate(
Table.ToRecords(t_Customizations),
t_Defaults,
(s,c)=>let pos = Table.PositionOf(s, Record.SelectFields(c, keys), 0, keys)
in Table.ReplaceRows(s, pos, 1, {c})
)
in
acc
// t_Defaults
let
Source = Excel.CurrentWorkbook(){[Name="t_Defaults"]}[Content]
in
Source
Hi @jaryszek
protocol1 =
IF (
RELATED ( t_Customizations1[StorageProtocol] ) <> BLANK (),
RELATED ( t_Customizations1[StorageProtocol] ),
t_Defaults2[StorageProtocol]
)
version1 =
IF (
RELATED ( t_Customizations1[ProtocolVersion] ) <> BLANK (),
RELATED ( t_Customizations1[ProtocolVersion] ),
t_Defaults2[ProtocolVersion]
)
Best Regards
Maggie
Community Support Team _ Maggie Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.