Advance your Data & AI career with 50 days of live learning, dataviz contests, hands-on challenges, study groups & certifications and more!
Get registeredJoin us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM. Register now.
I have two tables, Calendar and Position, I'm trying to add a calculated column to Calendar that shows what department the NetID belonged to on that date.
Ex: It will find all the positions "a" had, then find the one where the "Date" is between "Start Date" and "End Date", and return the "Department".
Normally I would run 2 loops to get the answer, but not sure how to do this in Power BI as I'm quite new, please help thanks!
Calendar
| Dates | NetID |
| 1/1/2020 | a |
| 1/1/2020 | b |
| 1/1/2020 | c |
| 1/2/2020 | a |
| 1/2/2020 | b |
| 1/2/2020 | c |
| 1/3/2020 | a |
| 1/3/2020 | b |
| 1/3/2020 | c |
Position
| NetID | Start Date | End Date | Department |
| a | 10/1/2019 | 12/1/2019 | Dining |
| a | 12/2/2019 | 3/1/2050 | Res life |
| b | 12/5/2019 | 3/1/2050 | Housing |
| c | 10/31/2018 | 11/5/2019 | Housing |
| c | 11/6/2019 | 3/1/2050 | Dining |
Solved! Go to Solution.
@Anonymous
I second the approach by @JarroVGIT , but I would drop the fact and expand the table as he/she mentioned. Then define the relationship with Dates and the new fact.
Refer to these posts.
Column = CALCULATE(MAX(Position[Department]),FILTER(ALL(Position),Position[Start Date]>=Calendar[Dates] && Position[End Date]<=Calendar[Dates] && Calendar[NetID] = Position[NetID]))
If this helps, mark it as a solution
Kudos are nice too
Hi @Anonymous,
Sorry for delay in response! You are right, you can't delete columns from a calculated table. (It does make sense but I didn't know that either untill you said so :P).
You can circumvent this by using this calculated table instead (is uses SELECTCOLUMNS to select only the columns that you want):
Calendar =
VAR _tmpTable = GENERATE(Positions,
VAR _start = Positions[Start Date]
VAR _end = Positions[End Date]
RETURN
GENERATESERIES(_start, _end))
RETURN
SELECTCOLUMNS(_tmpTable, "Date", [Value], "NetID", [NetID])Don't forget to like posts that helped you out (as a motivator :)) and to mark posts as solution if it provided the solution for you 🙂
Good night!
Kind regards
Djerro123
-------------------------------
If this answered your question, please mark it as the Solution. This also helps others to find what they are looking for.
Keep those thumbs up coming! 🙂
Proud to be a Super User!
Perfectly what I needed.
@Anonymous
I second the approach by @JarroVGIT , but I would drop the fact and expand the table as he/she mentioned. Then define the relationship with Dates and the new fact.
Refer to these posts.
Column = CALCULATE(MAX(Position[Department]),FILTER(ALL(Position),Position[Start Date]>=Calendar[Dates] && Position[End Date]<=Calendar[Dates] && Calendar[NetID] = Position[NetID]))
If this helps, mark it as a solution
Kudos are nice too
This seems to have worked too after changing it to
Hi @Anonymous ,
My advice would be to drop the Calendar table and create it dynamically from your Position data with the following DAX:
Calendar = GENERATE(Positions,
VAR _start = Positions[Start Date]
VAR _end = Positions[End Date]
RETURN
GENERATESERIES(_start, _end))That returns a row for every date between start date en end date for every row in the first table. It returns a couple more columns from the Positions table but you can delete those if you don't need those. Does this meet your requirements?
Kind regards
Djerro123
-------------------------------
If this answered your question, please mark it as the Solution. This also helps others to find what they are looking for.
Keep those thumbs up coming! 🙂
Proud to be a Super User!
This does help me get what I need! How would I remove the other columns in this new table though? The delete option is greyed out when I select a column and the table is not showing up in power query.
Hi @Anonymous,
Sorry for delay in response! You are right, you can't delete columns from a calculated table. (It does make sense but I didn't know that either untill you said so :P).
You can circumvent this by using this calculated table instead (is uses SELECTCOLUMNS to select only the columns that you want):
Calendar =
VAR _tmpTable = GENERATE(Positions,
VAR _start = Positions[Start Date]
VAR _end = Positions[End Date]
RETURN
GENERATESERIES(_start, _end))
RETURN
SELECTCOLUMNS(_tmpTable, "Date", [Value], "NetID", [NetID])Don't forget to like posts that helped you out (as a motivator :)) and to mark posts as solution if it provided the solution for you 🙂
Good night!
Kind regards
Djerro123
-------------------------------
If this answered your question, please mark it as the Solution. This also helps others to find what they are looking for.
Keep those thumbs up coming! 🙂
Proud to be a Super User!
Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!
Check out the October 2025 Power BI update to learn about new features.
| User | Count |
|---|---|
| 75 | |
| 36 | |
| 31 | |
| 29 | |
| 26 |