"""Helper functions related to Snowflake DB actions.""" from connectors import snowflake as snowdb from utils.db_utils import run_query, zip_resultproxy_dict from sql.select_all_distinct_single_field \ import SELECT_ALL_DISTINCT_SINGLE_FIELD from sql.select_all_single_field import \ SELECT_ALL_SINGLE_FIELD from sql.select_all_distinct_fields import SELECT_ALL_DISTINCT_FIELDS from sql.select_all_fields import SELECT_ALL_FIELDS @snowdb.db_session_wrap def get_single_snowflake_field(session, field, table, distinct=False): """Get the value of a single field from snowflake. Args: session (SQLAlchemy): Session from db wrapper field (str): field name to retrieve table (str): table name to query distinct (bool): require distinct rows in result? Returns: dict """ params = { 'field_name': field, 'table_name': table } sql = SELECT_ALL_DISTINCT_SINGLE_FIELD if distinct \ else SELECT_ALL_SINGLE_FIELD query_results = run_query(session, sql=sql, params=params) results = zip_resultproxy_dict(query_results) return results @snowdb.db_session_wrap def get_snowflake_fields(session, field_list: list, table, distinct=False): """Get the value of a list of fields from snowflake. Args: session (SQLAlchemy): Session from db wrapper field (list): List of field names to retrieve table (str): table name to query distinct (bool): require distinct rows in result? Returns: dict """ field_names = ','.join(list(field_list)) params = { 'field_names': field_names, 'table_name': table } sql = SELECT_ALL_DISTINCT_FIELDS if distinct \ else SELECT_ALL_FIELDS query_results = run_query(session, sql=sql, params=params) results = zip_resultproxy_dict(query_results) return results