Magic ETL

Magic ETL

Generate Date Range Column from Two Date Columns

Hi all !

Im trying to generate a date column with a range of dates from two columns:

Table I have (date format (mm/dd/yyyy) )

  1. Id start_date end_date field1
  2. 1 01/01/2019 07/01/2019 text1
  3. 1 07/01/2019 12/01/2019 text2
  4. 2 01/01/2019 02/01/2019 text3

The idea is to generate a list of dates between start and end date with an interval of 1 month.

Output Table :

  1. Id date field1
  2. 1 01/01/2019 text1
  3. 1 02/01/2019 text1
  4. 1 03/01/2019 text1
  5. 1 04/01/2019 text1
  6. 1 05/01/2019 text1
  7. 1 06/01/2019 text1
  8. 1 07/01/2019 text2
  9. 1 10/01/2019 text2
  10. 1 11/01/2019 text2
  11. 1 12/01/2019 text2
  12. 2 01/01/2019 text3
  13. 2 02/01/2019 text2
  14.  

Any idea how could I get this ?

Appreciate the help! Thanks

Tagged:

Best Answer

  • Coach
    Answer ✓

    I just posted something for a similar question but you can use the calendar.csv dataset from the Domo Dimensions connector.

    Then you can use MySQL to get your desired output (MagicETL doesn't support conditional joins like this directly. You'd have to do a cartesian join [add constant column to both - say a value of 1 - and then join both datasets on that value then use a filter tile to filter your dataset down. This would exponentially increase the amount of records MagicETL would have to process and isn't as straight forward as MySQL in this case)

    1. select `Id`, `dt` as date, `field1`
    2. FROM `calendar_dates` as cd
    3. JOIN `my_dataset` ds on cd.dt BETWEEN ds.`start_date` and ds.`end_date` and cd.d = 1

    cd.d=1 just tells it to return the record for the first day of the month since you're wanting to do it on a monthly basis and your data appears to use the first day to represent each month.

    **Was this post helpful? Click Agree or Like below**
    **Did this solve your problem? Accept it as a solution!**

Answers

  • Coach
    Answer ✓

    I just posted something for a similar question but you can use the calendar.csv dataset from the Domo Dimensions connector.

    Then you can use MySQL to get your desired output (MagicETL doesn't support conditional joins like this directly. You'd have to do a cartesian join [add constant column to both - say a value of 1 - and then join both datasets on that value then use a filter tile to filter your dataset down. This would exponentially increase the amount of records MagicETL would have to process and isn't as straight forward as MySQL in this case)

    1. select `Id`, `dt` as date, `field1`
    2. FROM `calendar_dates` as cd
    3. JOIN `my_dataset` ds on cd.dt BETWEEN ds.`start_date` and ds.`end_date` and cd.d = 1

    cd.d=1 just tells it to return the record for the first day of the month since you're wanting to do it on a monthly basis and your data appears to use the first day to represent each month.

    **Was this post helpful? Click Agree or Like below**
    **Did this solve your problem? Accept it as a solution!**
  • @GrantSmith That's exactly what I need. Thank you!

Welcome!

It looks like you're new here. Members get access to exclusive content, events, rewards, and more. Sign in or register to get started.
Sign In