Power BI is turning 10, and we’re marking the occasion with a special community challenge. Use your creativity to tell a story, uncover trends, or highlight something unexpected.
Get startedJoin us for an expert-led overview of the tools and concepts you'll need to become a Certified Power BI Data Analyst and pass exam PL-300. Register now.
Hello everyone
I am desperate and do not know how I can realize the following:
I have two tables:
G_L Entry (1 table)
GL Account No | Amount |
170000 | 5000 € |
210000 | 3500 € |
520000 | 1000 € |
520222 | 2000 € |
174000 | 5000 € |
520000 | 8000 € |
550000 | 1000 € |
Acc_ Schedule Line (2 table)
Totaling |
170|520|174|5200|5500 |
The totaling field is a text string composed of several values, for example (170|520|174|524|5200|5500).
I need to make a formula that is able to read those values and add the "Amount" when the "GL Account No" starts with one of the values we have read from the "Totaling" column.
For example this measure return this:
22.000 €
Thank you very much to all of you.
Regards
Vicente
Solved! Go to Solution.
Hi @vpastor, check this:
Result
let
Table1 = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjQ3AAIlHSVTIKXwqGmNUqxOtJKRIVTU2BRJ1NQIKmpogCpqZGQEFDVCFjU0N8FiLtwECxRRUwxzYwE=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"GL Account No" = _t, Amount = _t]),
Table1ChangedType = Table.TransformColumnTypes(Table1,{{"GL Account No", type text},{"Amount", type number}}, "sk-SK"),
Table1Buffered = Table.Buffer(Table1ChangedType),
Table2 = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjQ3qDE1MqgxNDcB0UCOqYGBUqxOtJKRIVgUzDYEShgaGSvFxgIA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Totaling = _t]),
Ad_SumAmount = Table.AddColumn(Table2, "Sum Amount", each
[ a = Text.Split([Totaling], "|"),
b = Table.SelectRows(Table1Buffered, (x)=> List.Contains(a, x[GL Account No], (y,z)=> Text.StartsWith(z,y)))[Amount],
c = List.Sum(b) ?? 0
][c], type number)
in
Ad_SumAmount
Hi @vpastor, you're welcome 😉
let
Table1 = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjQ3AAIlHSVTIKXwqGmNUqxOtJKRIVTU2BRJ1NQIKmpogCpqZGQEFDVCFjU0N8FiLtwECxRRUwxzYwE=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"GL Account No" = _t, Amount = _t]),
Table1ChangedType = Table.TransformColumnTypes(Table1,{{"GL Account No", type text},{"Amount", type number}}),
Table2 = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjQ3qDE1MqgxNDcB0UCOqYGBUmwsAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Totaling = _t]),
Table2Split = Table.TransformColumns(Table2, {{"Totaling", each Text.Split(_, "|"), type list}}),
Table2ToListBuffered = List.Buffer(List.Combine(Table2Split[Totaling])),
StepBack = Table1ChangedType,
Ad_Check = Table.AddColumn(StepBack, "Check", each if List.Contains(Table2ToListBuffered, [GL Account No], (x,y)=> Text.StartsWith(y, x)) then 1 else 0, Int64.Type),
FilteredRows = Table.SelectRows(Ad_Check, each ([Check] = 1)),
CalculatedSum = List.Sum(FilteredRows[Amount])
in
CalculatedSum
Hi @dufoq3
Thank you very much for your quick and efficient response.
I have verified the answer with the example code and it is perfect.
The problem I have is that table 2 "Acc_ Schedule Line" has not only one row, it is composed of multiple rows. For example:
Acc_ Schedule Line (2 table)
Totaling |
170|520|174|5200|5500 |
100|123 |
70001|70002|70003 |
421000|422000 |
Could you please modify the query to work with the attached example?
I suppose we will have to create a column in table 2 that returns the sum of "GL Account No" according to the values of "Totaling".
Thank you very much
Regards
Vicente
Hi @dufoq3,
Yes, your query work corretly, but i need this result for example:
G_L Entry (1 table)
GL Account No | Amount |
170000 | 5000 € |
210000 | 3500 € |
520000 | 1000 € |
520222 | 2000 € |
174000 | 5000 € |
520000 | 8000 € |
550000 | 1000 € |
Acc_ Schedule Line (2 table)
Totaling | Sum Amount |
170|520|174|5200|5500 | 22.000 € |
210|174 | 8500 € |
100|123 | 0 € |
I would be very grateful if you could adapt the query to my needs.
Thank you so much!
Vicente
Hi @vpastor, check this:
Result
let
Table1 = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjQ3AAIlHSVTIKXwqGmNUqxOtJKRIVTU2BRJ1NQIKmpogCpqZGQEFDVCFjU0N8FiLtwECxRRUwxzYwE=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"GL Account No" = _t, Amount = _t]),
Table1ChangedType = Table.TransformColumnTypes(Table1,{{"GL Account No", type text},{"Amount", type number}}, "sk-SK"),
Table1Buffered = Table.Buffer(Table1ChangedType),
Table2 = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjQ3qDE1MqgxNDcB0UCOqYGBUqxOtJKRIVgUzDYEShgaGSvFxgIA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Totaling = _t]),
Ad_SumAmount = Table.AddColumn(Table2, "Sum Amount", each
[ a = Text.Split([Totaling], "|"),
b = Table.SelectRows(Table1Buffered, (x)=> List.Contains(a, x[GL Account No], (y,z)=> Text.StartsWith(z,y)))[Amount],
c = List.Sum(b) ?? 0
][c], type number)
in
Ad_SumAmount
Hi @dufoq3,
I'm afraid not, when I copy your answer it does not work correctly.
This is the error:
Thank you so much!
This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.
Check out the June 2025 Power BI update to learn about new features.
User | Count |
---|---|
15 | |
11 | |
8 | |
8 | |
7 |
User | Count |
---|---|
15 | |
13 | |
9 | |
7 | |
6 |