The ultimate Fabric, Power BI, SQL, and AI community-led learning event. Save €200 with code FABCOMM.
Get registeredEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
Hi,
I need help with the following Problem:
Table A has records about service contracts and their value as well as covered time frame. I have contracts for 1 to 5 years. For better analytics, I need to create a new table which only has records valid for 12 month (1 yr) and the cotract value for that time frame.
My Main Table A looks like:
RecID | Name | StartDate | EndDate | Value | Years | |||||
1 | Test1 | 01.01.2022 | 31.12.2022 | $ 10.000,00 | 1 | |||||
2 | Test2 | 22.06.2023 | 21.06.2024 | $ 50.000,00 | 1 | |||||
3 | Test3 | 01.01.2021 | 31.12.2024 | $ 90.000,00 | 3 | |||||
4 | Test4 | 14.02.2022 | 13.02.2024 | $ 40.000,00 | 2 | |||||
5 | Test5 | 01.05.2021 | 30.04.2025 | $ 50.000,00 | 5 |
The new Table should look like:
RecID | Name | StartDate | EndDate | Value | Years | |||||
1 | Test1 | 01.01.2022 | 31.12.2022 | $ 10.000,00 | 1 | |||||
2 | Test2 | 22.06.2023 | 21.06.2024 | $ 50.000,00 | 1 | |||||
3 | Test3 | 01.01.2021 | 31.12.2022 | $ 30.000,00 | 1 | |||||
4 | Test3 | 01.01.2022 | 31.12.2023 | $ 30.000,00 | 1 | |||||
5 | Test3 | 01.01.2023 | 31.12.2024 | $ 30.000,00 | 1 | |||||
6 | Test4 | 14.02.2022 | 13.02.2023 | $ 20.000,00 | 1 | |||||
7 | Test4 | 14.02.2023 | 13.02.2024 | $ 20.000,00 | 1 | |||||
8 | Test5 | 01.05.2021 | 30.04.2022 | $ 10.000,00 | 1 | |||||
9 | Test5 | 01.05.2022 | 30.04.2023 | $ 10.000,00 | 1 | |||||
10 | Test5 | 01.05.2023 | 30.04.2024 | $ 10.000,00 | 1 | |||||
11 | Test5 | 01.05.2024 | 30.04.2025 | $ 10.000,00 | 1 | |||||
12 | Test5 | 01.05.2025 | 30.04.2026 | $ 10.000,00 | 1 |
Can someone help me?
Solved! Go to Solution.
Hi @ClausS - you can try below suggested solutions and request from @Sahir_Maharaj and @uzuntasgokberk .
giving another alternative with a new calculated table logic as below
Proud to be a Super User! | |
Hi @ClausS - you can try below suggested solutions and request from @Sahir_Maharaj and @uzuntasgokberk .
giving another alternative with a new calculated table logic as below
Proud to be a Super User! | |
I added an IF Statement around the "INT(DATEDIFF(TableA[StartDate], TableA[EndDate], MONTH) / 12)" to make sure the Result is greater 0 and now it works. Data is never be perfect 🙂
Thx again for your great help.
Claus
Thx for your work, I think something is missing. I get the error message "The arguments in GenerateSeries function cannot be blank."
Can we include a statement to make sure records with incorrcet data (Like no start or end date) will be skipped?
BR
Claus
Hello @ClausS,
Can you please try this approach:
NormalizedTable =
ADDCOLUMNS(
GENERATE(
'Table A',
VAR ContractStart = [StartDate]
VAR ContractEnd = [EndDate]
VAR ContractYears = [Years]
VAR ValuePerYear = [Value] / ContractYears
RETURN GENERATESERIES(1, ContractYears, 1)
),
"YearStart",
DATEADD([StartDate], (VALUE - 1) * 12),
"ValuePerYear",
[Value] / [Years]
)
Hello @ClausS ,
Filter years column to 1?
Kind Regards,
Gökberk Uzuntaş
📌 If this post helps, then please consider Accepting it as a solution and giving Kudos — it helps other members find answers faster!
🔗 Stay Connected:
📘 Medium |
📺 YouTube |
💼 LinkedIn |
📷 Instagram |
🐦 X |
👽 Reddit |
🌐 Website |
🎵 TikTok |
User | Count |
---|---|
75 | |
70 | |
39 | |
30 | |
28 |
User | Count |
---|---|
104 | |
95 | |
51 | |
48 | |
46 |