Maybe the attached file will help. My data only goes back to 2017-07-25, but it can be accomplished with a SQL query like this on your CBOE data.
select min(quote_date) as min_date, max(quote_date) as max_date,
concat_ws('-',underlying_symbol,root,expiration,option_type,strike) as contract...