#!/usr/bin/env python import click import click_spinner from calculations import create_quantile_table from db_client import get_connection, query_to_df @click.command() @click.option("--username", prompt=True, help="Your Reporting DB server username") @click.option("--password", prompt=True, hide_input=True, help="Your Reporting DB server password") @click.option("--hostname", help="Reporting DB server host name, defaults to reporting-db.smeanalyticsapps.com", default="reporting-db.smeanalyticsapps.com") @click.option("--dbname", help="The database to query from, defaults to smaredshiftdb", default="smaredshiftdb") @click.option("--port", help="Port to access the DB from, defaults to Redshift default 5432", default="5432") @click.option("--destination", prompt=True, help="Path to CSV file to write results to") def precalculate(username, password, hostname, dbname, port, destination): connection = get_connection(username=username, password=password, host=hostname, dbname=dbname, port=port) click.echo("Retrieving from DB... ") with click_spinner.spinner(): with open("etl/streaming_data.sql") as query_file: query = query_file.read() _res = query_to_df(sqlquery=query, connection=connection) click.echo("Retrieved results. Now precalculating...") with click_spinner.spinner(): _quantiles = create_quantile_table(_res) click.echo(f"Exporting to {destination}...") with click_spinner.spinner(): _quantiles.to_csv(destination) if __name__ == '__main__': precalculate()