Join 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!To celebrate FabCon Vienna, we are offering 50% off select exams. Ends October 3rd. Request your discount now.
Hi
I have a flat table with ShipmentDateCost and ShipmentDateSales
I want to find a way to filter on those 2 dates at once.
So I want to see all bought and solgt in ex. september 2024?
I tried adding 2 date tables, one for each field, and then a Year-Month table to filter those 2, but it does not work.
ChatGPT said something like this:
Solved! Go to Solution.
Hi @Fragmaticx ,
This maybe occur because the FORMAT function is returning string, let try this upadated DAX:
IsInSelectedPeriod =
VAR SelectedYearMonth = SELECTEDVALUE('DateTable'[ShipPeriod])
VAR SelectedYear = YEAR(DATEVALUE(SelectedYearMonth & "01"))
VAR SelectedMonth = MONTH(DATEVALUE(SelectedYearMonth & "01"))
RETURN
IF(
CALCULATE(
COUNTROWS('BaseData'),
FILTER(
'BaseData',
YEAR('BaseData'[ShipmentDateSales]) = SelectedYear
&& MONTH('BaseData'[ShipmentDateSales]) = SelectedMonth
|| YEAR('BaseData'[ShipmentDateCost]) = SelectedYear
&& MONTH('BaseData'[ShipmentDateCost]) = SelectedMonth
)
) > 0,
1,
0
)
Hi, @Fragmaticx
Have you solved your problem? If so, can you share your solution here and mark the correct answer as a standard answer to help other members find it faster? Thank you very much for your kind cooperation!
Best Regards
Yongkang Hua
Hi @Fragmaticx ,
Instead of using two separate date tables, create a single calendar table. This table will be the reference for both ShipmentDateCost and ShipmentDateSales.
Calendar =
ADDCOLUMNS(
CALENDAR(DATE(2020, 1, 1), DATE(2030, 12, 31)),
"YearMonth", FORMAT([Date], "YYYY-MM")
)
Make sure to create a calendar table with your desired range
Create a measure to check if a record matches the selected YearMonth
IsInSelectedPeriod =
VAR SelectedYearMonth = SELECTEDVALUE(Calendar[YearMonth])
RETURN
IF(
FORMAT('YourFlatTable'[ShipmentDateCost], "YYYY-MM") = SelectedYearMonth
|| FORMAT('YourFlatTable'[ShipmentDateSales], "YYYY-MM") = SelectedYearMonth,
1,
0
)
Apply the IsInSelectedPeriod measure as a visual-level filter with a condition set to = 1. This ensures only relevant rows appear in your visuals.
Hi @Bibiano_Geraldo
I did what you suggested using this measure:
IsInSelectedPeriod =
VAR SelectedYearMonth = SELECTEDVALUE('DateTable'[ShipPeriod])
RETURN
IF(
CALCULATE(
COUNTROWS('BaseData'),
FILTER(
'BaseData',
FORMAT('BaseData'[ShipmentDateSales], "YYYYMM") = SelectedYearMonth
|| FORMAT('BaseData'[ShipmentDateCost], "YYYYMM") = SelectedYearMonth
)
) > 0,
1,
0
)
If I join my date table on sales and filter october 24 i get a different amount than if i join the date table on my table and filter ostober using this logic.
Did i miss something?
Hi @Fragmaticx ,
This maybe occur because the FORMAT function is returning string, let try this upadated DAX:
IsInSelectedPeriod =
VAR SelectedYearMonth = SELECTEDVALUE('DateTable'[ShipPeriod])
VAR SelectedYear = YEAR(DATEVALUE(SelectedYearMonth & "01"))
VAR SelectedMonth = MONTH(DATEVALUE(SelectedYearMonth & "01"))
RETURN
IF(
CALCULATE(
COUNTROWS('BaseData'),
FILTER(
'BaseData',
YEAR('BaseData'[ShipmentDateSales]) = SelectedYear
&& MONTH('BaseData'[ShipmentDateSales]) = SelectedMonth
|| YEAR('BaseData'[ShipmentDateCost]) = SelectedYear
&& MONTH('BaseData'[ShipmentDateCost]) = SelectedMonth
)
) > 0,
1,
0
)
Hi @Fragmaticx ,
Instead of using two separate date tables, create a single calendar table. This table will be the reference for both ShipmentDateCost and ShipmentDateSales.
Calendar =
ADDCOLUMNS(
CALENDAR(DATE(2020, 1, 1), DATE(2030, 12, 31)),
"YearMonth", FORMAT([Date], "YYYY-MM")
)
Make sure to create a calendar table with your desired range
Create a measure to check if a record matches the selected YearMonth
IsInSelectedPeriod =
VAR SelectedYearMonth = SELECTEDVALUE(Calendar[YearMonth])
RETURN
IF(
FORMAT('YourFlatTable'[ShipmentDateCost], "YYYY-MM") = SelectedYearMonth
|| FORMAT('YourFlatTable'[ShipmentDateSales], "YYYY-MM") = SelectedYearMonth,
1,
0
)
Apply the IsInSelectedPeriod measure as a visual-level filter with a condition set to = 1. This ensures only relevant rows appear in your visuals.
Hi @Fragmaticx
You will need just one dates table with relationships to your fact table - one active and one inactive.
Assuming active is on ShiptmentDateCost then the measure would be as simple as SUM (facttable[column]). For ShipmentDateSales, that would be
CALCULATE (
SUM ( facttable[column] ),
USERELATIONSHIP ( datetable[date], facttable[ShipmentDateSales] ) --USERELATIONSHIP to invoke an inactive relationshipo
)
Your approach with the 2 date tables and one date-month table on top doesn't work because it only filters to values where BOTH ShipmentDateCost and ShipmentDateSales were in the same month. And I think you want to see all the values which have been ShipmentDateCost OR ShipmentDateSales have been e.g. in september?
Hi
yes I want to see either cost or sales in a given month.
But I would like to be able to filter on table/graphs and so on 🙂