Join us for an expert-led overview of the tools and concepts you'll need to pass exam PL-300. The first session starts on June 11th. See you there!
Get registeredPower BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. 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!
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 |
---|---|
76 | |
75 | |
56 | |
38 | |
34 |
User | Count |
---|---|
99 | |
56 | |
51 | |
44 | |
40 |