Skip to content

Instantly share code, notes, and snippets.

@Zmey56
Created January 9, 2023 20:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Zmey56/29379b0765c6f7b2e9991bcae487a66d to your computer and use it in GitHub Desktop.
Save Zmey56/29379b0765c6f7b2e9991bcae487a66d to your computer and use it in GitHub Desktop.
def get_where_expression(where_expression_template, group_by_slices_list, time, slice, all_data=False):
where_expression = ''' {where_expression_template} and {alias} in ({group_levels}) '''
day_0_min_time = time
day_0_max_time = time + pd.Timedelta(minutes=15)
day_1_min_time = time - pd.Timedelta(minutes=15) - pd.Timedelta(days=1)
day_1_max_time = time + pd.Timedelta(minutes=30) - pd.Timedelta(days=1)
day_7_min_time = time - pd.Timedelta(minutes=15) - pd.Timedelta(days=7)
day_7_max_time = time + pd.Timedelta(minutes=30) - pd.Timedelta(days=7)
time_expression = ''' and ((time >= '{day_0_min_time}' and time < '{day_0_max_time}')
or (time >= '{day_1_min_time}' and time < '{day_1_max_time}')
or (time >= '{day_7_min_time}' and time < '{day_7_max_time}'))'''.format(day_0_min_time=day_0_min_time,
day_0_max_time=day_0_max_time,
day_1_min_time=day_1_min_time,
day_1_max_time=day_1_max_time,
day_7_min_time=day_7_min_time,
day_7_max_time=day_7_max_time)
if not all_data:
where_expression_template = where_expression_template + time_expression
else:
where_expression_template = where_expression_template
if slice == 'total':
where_expression = where_expression_template
else:
group_levels = group_by_slices_list[slice]['group_levels']
alias = group_by_slices_list[slice]['alias']
group_levels = "'" + "', '".join(group_levels) + "'"
where_expression = where_expression.format(where_expression_template=where_expression_template,
alias=alias,
group_levels=group_levels)
return where_expression
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment