Don't miss your chance to take the Fabric Data Engineer (DP-600) exam for FREE! Find out how by watching the DP-600 session on-demand now through April 28th.
Learn moreJoin the FabCon + SQLCon recap series. Up next: Power BI, Real-Time Intelligence, IQ and AI, and Data Factory take center stage. All sessions are available on-demand after the live show. Register now
Hello all,
I think this is a basic grouping action however I can't get it to work. Or I may need to pivot or have a conditional statement in, but was hoping someone would be able to assist.
I have a data set of sales where, if there are multiple rows for a single day and code, I want to SUM the Qty column relating to the Date and the Code and for the summed value to populate in the corresponding row that has A in column A or P. And to leave the corresponding Qty cell (where column [A or P] is P) blank. The order of [A and P] is not always A on top so may need sorting? But don't want to mess up the data. Example of desired outcome below, and data table provided.
Solved! Go to Solution.
hello, @JNelson group and expand operations may shuffle data so add index column to sort by in the end if you like.
let
Source = your_table,
fx = (tbl) =>
if Table.RowCount(tbl) = 1
then tbl
else Table.FromRecords(
Table.TransformRows(
tbl,
(x) => Record.TransformFields(
x,
{"Qty", each if x[A or P] = "A" then List.Sum(tbl[Qty]) else null}
)
)
),
group = Table.Group(
Source,
{"Date", "Code"},
{{"x", fx}}),
xp_tbl = Table.ExpandTableColumn(group, "x", {"Type", "Qty", "Q2", "A or P"})
in
xp_tbl
Hi @JNelson, different approach here.
Before
After
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMrTQNzDRNzIwMlHSUTIEYv+izPTMvMQcINPYwABImoMIR6VYHSyKA4ryQSosgIQlSFkApjIjIPZxKlaAKDW0sASSpviVIjnBxBxImEEcEAsA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Date = _t, Code = _t, Type = _t, Qty = _t, Q2 = _t, #"A or P" = _t]),
ChangedType = Table.TransformColumnTypes(Source,{{"Qty", Int64.Type}, {"Q2", Int64.Type}, {"Date", type date}}),
GroupedRows = Table.Group(ChangedType, {"Date", "Code"}, {{"All", each Table.AddColumn(_, "Sum Qty", (x)=> List.Sum([Qty]), Int64.Type), type table [Date=nullable date, Code=nullable text, Type=nullable text, Qty=nullable number, Q2=nullable number, A or P=nullable text]}}),
CombinedAll = Table.Combine(GroupedRows[All]),
ReplacedQty = Table.ReplaceValue(CombinedAll,
each [A or P] = "A",
each [Sum Qty],
(x,y,z)=> if y then z else null,
{"Qty"} ),
RestoreDataTypes = Value.ReplaceType(ReplacedQty, Value.Type(CombinedAll)),
RemovedColumns = Table.RemoveColumns(RestoreDataTypes,{"Sum Qty"})
in
RemovedColumns
hello, @JNelson group and expand operations may shuffle data so add index column to sort by in the end if you like.
let
Source = your_table,
fx = (tbl) =>
if Table.RowCount(tbl) = 1
then tbl
else Table.FromRecords(
Table.TransformRows(
tbl,
(x) => Record.TransformFields(
x,
{"Qty", each if x[A or P] = "A" then List.Sum(tbl[Qty]) else null}
)
)
),
group = Table.Group(
Source,
{"Date", "Code"},
{{"x", fx}}),
xp_tbl = Table.ExpandTableColumn(group, "x", {"Type", "Qty", "Q2", "A or P"})
in
xp_tbl
NewStep=let a=Table.Group(PreivousStepName,{"Date","Code"},{"n",each if Table.RowCount(_)>1 then List.Sum([Qty]) else null}) in Table.ReplaceValue(PreviousStepName,each _,"",(x,y,z)=>let b= a{[Date=y[Date],Code=y[Code]]}[n] in if b=null then x else if y[A or P]="A" then b else null,{"Qty"})
Check out the April 2026 Power BI update to learn about new features.
If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.
A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.
| User | Count |
|---|---|
| 3 | |
| 3 | |
| 2 | |
| 2 | |
| 2 |
| User | Count |
|---|---|
| 5 | |
| 4 | |
| 4 | |
| 4 | |
| 4 |