March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early bird discount ends December 31.
Register NowBe one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now
Hello guys
I am performing a calculation with DAX on power BI and would like to know if anyone could help me. My data is in table A and the results I want are in table B.
Best regards,
Thank you
Solved! Go to Solution.
Hi @esilva32
It certainly looks like it would be easier to do this in the query editor. If you do need to do it in DAX, try this. Create a new calculated table:
TableB = VAR _BaseTable = ADDCOLUMNS ( GENERATE ( DISTINCT ( TableA[Id] ); GENERATESERIES ( CALCULATE ( DISTINCT ( TableA[StartDate] ) ); CALCULATE ( DISTINCT ( TableA[EndDate] ) ) ) ); "TempVal"; CALCULATE ( DISTINCT ( TableA[Value] ) ) ) VAR _Dates = DISTINCT ( SELECTCOLUMNS ( _BaseTable; "Date"; [Value] ) ) VAR _ResTable = ADDCOLUMNS ( _Dates; "Total Value"; SUMX ( _BaseTable; IF ( [Value] = [Date]; [TempVal] ) ) ) RETURN _ResTable
Hello guys
Thank you for your help. @AIB thank you, worked perfectly, thanks for the help.
Regards, Portugal.
Minor modification:
TableB = VAR _BaseTable = ADDCOLUMNS ( GENERATE ( DISTINCT ( TableA[Id] ); GENERATESERIES ( CALCULATE ( DISTINCT ( TableA[StartDate] ) ); MIN ( TODAY (); CALCULATE ( DISTINCT ( TableA[EndDate] ) ) ) ) ); "TempVal"; CALCULATE ( DISTINCT ( TableA[Value] ) ) ) VAR _Dates = DISTINCT ( SELECTCOLUMNS ( _BaseTable; "Date"; [Value] ) ) VAR _ResTable = ADDCOLUMNS ( _Dates; "Total Value"; SUMX ( _BaseTable; IF ( [Value] = [Date]; [TempVal] ) ) ) RETURN _ResTable
You can expand out your rows in Power Query using something like:
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each List.Dates( [Initial Date], Number.From( [Final Date]- [Initial Date]) +1, #duration(1,0,0,0))), #"Expanded Custom" = Table.ExpandListColumn(#"Added Custom", "Custom")
There is also GENERATESERIES in DAX. But, depending on what you want to do, check out these two Quick Measures as I think you want something like them.
https://community.powerbi.com/t5/Quick-Measures-Gallery/Open-Tickets/m-p/409364
https://community.powerbi.com/t5/Quick-Measures-Gallery/Periodic-Billing/m-p/409365
Hi @esilva32
It certainly looks like it would be easier to do this in the query editor. If you do need to do it in DAX, try this. Create a new calculated table:
TableB = VAR _BaseTable = ADDCOLUMNS ( GENERATE ( DISTINCT ( TableA[Id] ); GENERATESERIES ( CALCULATE ( DISTINCT ( TableA[StartDate] ) ); CALCULATE ( DISTINCT ( TableA[EndDate] ) ) ) ); "TempVal"; CALCULATE ( DISTINCT ( TableA[Value] ) ) ) VAR _Dates = DISTINCT ( SELECTCOLUMNS ( _BaseTable; "Date"; [Value] ) ) VAR _ResTable = ADDCOLUMNS ( _Dates; "Total Value"; SUMX ( _BaseTable; IF ( [Value] = [Date]; [TempVal] ) ) ) RETURN _ResTable
Hello guys
Thank you for your help. @AIB I tried your code and the message was this: it is not possible to convert multiple columns to a scalar value.
Guys, in Power Query I have to build a new table to put this code in it?
It works fine on my end. Check it out in this file. Maybe you've done something differently.
On a different note, please always show your sample data in text-tabular format in addition to (or instead of) the screen captures. That allows people trying to help to readily copy the data and run a quick test, plus it increases the likelihood of your question being answered. Just use 'Copy table' in Power BI and paste it here. Or, ideally, share the pbix (beware of confidential data).
Hello @AIB thank you.
If I want to repeat each line until the end date or for those that the end date is higher than today's date, repeat until today's date, what should I change in the code?
I sent an example in a pbix file where I want the result of table B from table A.
Could you help me again? I apologize for the inconvenience
thanks,
http://s000.tinyupload.com/?file_id=66436319019309661221
Minor modification:
TableB = VAR _BaseTable = ADDCOLUMNS ( GENERATE ( DISTINCT ( TableA[Id] ); GENERATESERIES ( CALCULATE ( DISTINCT ( TableA[StartDate] ) ); MIN ( TODAY (); CALCULATE ( DISTINCT ( TableA[EndDate] ) ) ) ) ); "TempVal"; CALCULATE ( DISTINCT ( TableA[Value] ) ) ) VAR _Dates = DISTINCT ( SELECTCOLUMNS ( _BaseTable; "Date"; [Value] ) ) VAR _ResTable = ADDCOLUMNS ( _Dates; "Total Value"; SUMX ( _BaseTable; IF ( [Value] = [Date]; [TempVal] ) ) ) RETURN _ResTable
Hello people.
I wonder if anyone here has possibilities to help me in PBI.
I need from table A with the fields date_1, time_1, value_1, currency_1, dataInt_1 and datahora_1, create a new table B that is a grouping by date_1, currency_1 and the maximum of datahora_1 and then bring the value_1 that corresponds to each one of these lines
thanks
data_1 | hora_1 | valor_1 | moeda_1 | dataInt_1 | datahora_1 |
01/01/2020 | 93412 | 0,89 | G | 20200101 | 2020010193412 |
01/01/2020 | 122402 | 0,78 | G | 20200101 | 20200101122402 |
01/01/2020 | 81432 | 111 | C | 20200101 | 2020010181432 |
01/01/2020 | 162341 | 109 | C | 20200101 | 20200101162341 |
01/01/2020 | 173245 | 0,92 | G | 20200101 | 20200101173245 |
01/01/2020 | 102341 | 453 | AO | 20200101 | 20200101102341 |
01/01/2020 | 151909 | 390 | AO | 20200101 | 20200101151909 |
02/01/2020 | 120405 | 115 | C | 20200102 | 20200102120405 |
02/01/2020 | 134232 | 116 | C | 20200102 | 20200102134232 |
02/01/2020 | 120923 | 438 | AO | 20200102 | 20200102120923 |
02/01/2020 | 84323 | 0,79 | G | 20200102 | 2020010284323 |
02/01/2020 | 94500 | 0,84 | G | 20200102 | 2020010294500 |
02/01/2020 | 172321 | 110,45 | C | 20200102 | 20200102172321 |
Hello people.
I wonder if anyone here has possibilities to help me in PBI.
I need from table A with the fields data_1, time_1, valor_1, moeda_1, dataInt_1 and datahora_1, create a new table B that is a grouping by date_1, moeda_1 and the maximum of datahora_1 and then bring the valor_1 that corresponds to each one of these lines
Hi @esilva32
To make the requirement a bit clearer, can you please show what the expected resulting table B would be? BAsed on the table A example you provide
Please mark the question solved when done and consider giving kudos if posts are helpful.
Cheers
Hello!
The possible result would be what is in the image below.
I need to take only a few fields where the field datahora_
1 is maximum.
Thanks
Hi @esilva32
What value do you want for each date-Currency pair, the latest one (time)?
Please mark the question solved when done and consider giving kudos if posts are helpful.
Cheers
Hi @AlB
Yes, for each date and currency I just need to get the amount corresponding to the date and the maximum time of that date for that currency.
best regards
Thank you
Thanks @ AIB
Hello guys
Thank you for your help. @AIB thank you, worked perfectly, thanks for the help.
Regards, Portugal.
You want Power Query for this - open the advanced editor and stick this in:
= Table.AddColumn(#"Changed Type", "NewDate", each List.Dates([start], Duration.TotalDays([end]-[start])+1, #duration(1,0,0,0)))
Making sure the columns are the right names. Then expand out the column into new rows, make the new column a date, and you can just sum on your value column and you're done
User | Count |
---|---|
120 | |
77 | |
58 | |
52 | |
46 |
User | Count |
---|---|
171 | |
117 | |
63 | |
57 | |
51 |