import os from pathlib import Path from dotenv import load_dotenv load_dotenv() def _get_base_dir() -> Path: infamous_dir = os.getenv("INFAMOUSDIR") if not infamous_dir: return Path(__file__).resolve().parent.parent.parent return Path(infamous_dir) / "projects-cea" / "summer-playlists-cea" BASE_DIR = _get_base_dir() class PATHS: base = BASE_DIR sql = BASE_DIR / "sql" sql_init = BASE_DIR / "sql" / "_create" class QUERY_PATHS: _sql = PATHS.sql _init = PATHS.sql_init # Shared get_dates = _sql / "get-dates.sql" # Skiprate make_session = _sql / "make-session-table.sql" append_skiprate = _sql / "append-skiprate-table.sql" make_skiprate_hyper = _sql / "make-skiprate-hyper-table.sql" # Discovery make_discovery_hyper = _sql / "make-discovery-hyper-table.sql" # Stats append_stats = _sql / "append-stats-table.sql" make_stats_hyper = _sql / "make-stats-hyper-table.sql" # Stats agg append_agg = _sql / "append-agg-table.sql" make_agg_hyper = _sql / "make-agg-hyper-table.sql" # Live make_live_hyper = _sql / "make-live-hyper-table.sql" # Init init_id_table = _init / "init-id-table.sql" TABLES = { # General "playlist_ids": "prod_eu_analytics.summer_playlists_ids", "playlist_positions": "prod_eu_analytics.liveplaylisting_spotify_histo", "playlist_positions_live": "prod_eu_analytics.liveplaylisting_spotify", # Skiprate "session": "prod_eu_analytics.summer_playlists_session", "skiprate_temp": "prod_eu_analytics.summer_playlists_skiprate_temp", "skiprate_main": "prod_eu_analytics.summer_playlists_skiprate_main", "skiprate_hyper": "prod_eu_analytics.summer_playlists_skiprate_hyper", # Discovery "discovery_source": "prod_eu_analytics.discoverydash_playlist_main", "discovery_hyper": "prod_eu_analytics.summer_playlists_discovery_hyper", # Stats "stats_temp": "prod_eu_analytics.summer_playlists_stats_temp", "stats_main": "prod_eu_analytics.summer_playlists_stats_main", "stats_hyper": "prod_eu_analytics.summer_playlists_stats_hyper", # Stats agg "stats_agg_temp": "prod_eu_analytics.summer_playlists_stats_agg_temp", "stats_agg_main": "prod_eu_analytics.summer_playlists_stats_agg_main", "stats_agg_hyper": "prod_eu_analytics.summer_playlists_stats_agg_hyper", # Live "live_hyper": "prod_eu_analytics.summer_playlists_live_hyper", } SESSION_PARAMS = { "consumers_per_playlist": 5000, "session_break_minutes": 30, "session_length_lower_minutes": 2, "session_length_upper_minutes": 120, } TABLEAU_SITE = "int_mktng" TABLEAU_DATASOURCE_IDS = { "SP_DISCOVERY": "9bbe75fe-f02d-4aaa-830c-cbd6d43e76d4", "SP_SKIPRATE": "556a419a-e36a-4152-9072-01b5a5855773", "SP_STATS": "6122f97e-ab0a-433c-918d-13ef2b908b26", "SP_AGGSTATS": "5f3a2db2-b54b-41d5-b81d-4cb107f13739", } TABLEAU_DATASOURCE_IDS_LIVE = { "SP_LIVE": "1ad26240-234c-4a26-932a-4f4bdfafd831", }