auto_sizing/utils.py (23 lines of code) (raw):
import itertools
from datetime import datetime, timedelta
from typing import Dict, List, Union
from google.cloud import bigquery
def dict_combinations(dictionary: Dict, key: str) -> List[Dict[str, Union[List, Dict]]]:
keys, values = zip(*dictionary[key].items())
dictionary_list = [dict(zip(keys, v)) for v in itertools.product(*values)]
return dictionary_list
def default_dates_dict(
current_date: datetime, num_dates_enrollment: int = 7, analysis_length: int = 28
) -> Union[Dict[str, int], Dict[str, str], Dict[str, object]]:
start_date = current_date - timedelta(num_dates_enrollment + analysis_length + 1)
return {
"start_date": start_date.strftime("%Y-%m-%d"),
"num_dates_enrollment": num_dates_enrollment,
"analysis_length": analysis_length,
}
def delete_bq_table(
table_id: str,
project_id: str,
) -> None:
client = bigquery.Client(project=project_id)
client.delete_table(table_id, not_found_ok=True)