Forum Discussion

Dawson16's avatar
Dawson16
Frequent Visitor
3 years ago
Solved

Intersect on Temporary Tables

Hello, I am trying to create a calculated column in my table that specifies whether the activity occurs during a certain month. For example, I want the calculated column to say "Yes" if the Activity occurs at any point the month before the snapshot date and "No" if not. Snapshots are taken each month of all of the activities, so start and finish dates can vary between them. Here is an example table to show what I'm trying for. 

I figured that a formula like the following would work, but it's not quite right. Does anyone know of a solution to this?

In Date Range? =

var ActListDates=DATESBETWEEN('Date'[Date],Table[Start Date], Table[Finish Date])
var PriorMonthListDates = PREVIOUSMONTH(Table[Snapshot Date])
Return
if(COUNTROWS(INTERSECT(ActListDates, PriorMonthListDates))>=1, "Yes", "No")

  • Dawson16 You could do this:

    In Date Range? Column = 
      VAR __MonthBeforeSnapshot = EOMONTH([Snapshot Date]),-1)
      VAR __FinishDate = EOMONTH([Snapshot Date],0)
    RETURN
      IF(__MonthBeforeSnapshot = __FinishDate,"Yes","No")
  • Hi Dawson16 ,

    The Greg's answr is correct, just try it.

    In Date Range? =
    VAR MonthStart =
        EOMONTH ( 'Intersect'[Start Date], 0 )
    VAR MonthFinish =
        EOMONTH ( 'Intersect'[Finish Date], 0 )
    VAR MonthBeforeSnapshot =
        EOMONTH ( 'Intersect'[Snapshot Date], -1 )
    RETURN
        IF (
            MonthBeforeSnapshot = MonthStart
                || MonthBeforeSnapshot = MonthFinish,
            "Yes",
            "No"
        )

    The idea is to compare end of month for each dates.

     

  • Greg_Deckler latimeria I just realized that the formulas above do not account for middle months if the activity spans more than two months. I believe I have found a solution to cover both instances, so I wanted to post it here for future guidance. 

    In Date Range? = 
    var ActivityListDates = DATESBETWEEN('Date'[Date],Table[Start Date],Table[Finish Date])
    var PriorMonthListDates = DATESBETWEEN('Date'[Date],(EOMONTH(Table[Snapshot Date],-2)+1), EOMONTH(Table[Snapshot Date],-1))
    	Return
    IF(COUNTROWS(INTERSECT(PriorMonthListDates,ActivityListDates))>=1, "Yes", "No")

     

6 Replies

  • Greg_Deckler's avatar
    Greg_Deckler
    Community Champion

    Dawson16 You could do this:

    In Date Range? Column = 
      VAR __MonthBeforeSnapshot = EOMONTH([Snapshot Date]),-1)
      VAR __FinishDate = EOMONTH([Snapshot Date],0)
    RETURN
      IF(__MonthBeforeSnapshot = __FinishDate,"Yes","No")
    • Dawson16's avatar
      Dawson16
      Frequent Visitor

      Greg_Deckler Thank you for your quick response! Unfortunately, this doesn't solve what I'm going for with this problem. I've attached some better sample data in a screenshot below as well as showed the formula I'm using. The rows I have highlighted yellow are giving improper results since their date ranges do coincide with the month preceding the respective snapshot dates. Please let me know if I can include any further images or data as needed to help clear up this issue.

      • latimeria's avatar
        latimeria
        Solution Specialist

        Hi Dawson16 ,

        The Greg's answr is correct, just try it.

        In Date Range? =
        VAR MonthStart =
            EOMONTH ( 'Intersect'[Start Date], 0 )
        VAR MonthFinish =
            EOMONTH ( 'Intersect'[Finish Date], 0 )
        VAR MonthBeforeSnapshot =
            EOMONTH ( 'Intersect'[Snapshot Date], -1 )
        RETURN
            IF (
                MonthBeforeSnapshot = MonthStart
                    || MonthBeforeSnapshot = MonthFinish,
                "Yes",
                "No"
            )

        The idea is to compare end of month for each dates.