in sql_generators/search_v2/__init__.py [0:0]
def generate(output_dir, target_project, use_cloud_function):
"""Generate mobile search clients daily query and print to stdout."""
base_dir = Path(__file__).parent
output_dir = Path(output_dir) / target_project
env = Environment(loader=FileSystemLoader(base_dir / "templates"))
android_query_template = env.get_template("fenix.template.sql")
ios_query_template = env.get_template("ios.template.sql")
android_focus_template = env.get_template("android_focus.template.sql")
android_klar_template = env.get_template("android_klar.template.sql")
ios_focus_template = env.get_template("ios_focus.template.sql")
ios_klar_template = env.get_template("ios_klar.template.sql")
metadata_template = "mobile_search_clients_engines_sources_daily.metadata.yaml"
firefox_android_queries = [
android_query_template.render(
namespace=namespace, app_name=app_name, channel=channel
)
for namespace, app_name, channel in FIREFOX_ANDROID_TUPLES
]
firefox_ios_queries = [
ios_query_template.render(
namespace=namespace, app_name=app_name, channel=channel
)
for namespace, app_name, channel in FIREFOX_IOS_TUPLES
]
focus_android_queries = [
android_focus_template.render(
namespace=namespace, app_name=app_name, channel=channel
)
for namespace, app_name, channel in FOCUS_ANDROID_TUPLES
]
klar_android_queries = [
android_klar_template.render(
namespace=namespace, app_name=app_name, channel=channel
)
for namespace, app_name, channel in KLAR_ANDROID_TUPLES
]
focus_ios_queries = [
ios_focus_template.render(
namespace=namespace, app_name=app_name, channel=channel
)
for namespace, app_name, channel in FOCUS_iOS_TUPLES
]
klar_ios_queries = [
ios_klar_template.render(
namespace=namespace, app_name=app_name, channel=channel
)
for namespace, app_name, channel in KLAR_iOS_TUPLES
]
queries = (
firefox_android_queries
+ firefox_ios_queries
+ focus_android_queries
+ klar_android_queries
+ focus_ios_queries
+ klar_ios_queries
)
search_query_template = env.get_template("mobile_search_clients_daily.template.sql")
fenix_combined_baseline = union_statements(
[
f"SELECT * FROM baseline_{namespace}"
for namespace, _, _ in FIREFOX_ANDROID_TUPLES
]
)
ios_combined_baseline = union_statements(
[f"SELECT * FROM baseline_{namespace}" for namespace, _, _ in FIREFOX_IOS_TUPLES]
)
android_focus_combined_baseline = union_statements(
[
f"SELECT * FROM baseline_{namespace}"
for namespace, _, _ in FOCUS_ANDROID_TUPLES
]
)
android_klar_combined_baseline = union_statements(
[
f"SELECT * FROM baseline_{namespace}"
for namespace, _, _ in KLAR_ANDROID_TUPLES
]
)
ios_focus_combined_baseline = union_statements(
[f"SELECT * FROM baseline_{namespace}" for namespace, _, _ in FOCUS_iOS_TUPLES]
)
ios_klar_combined_baseline = union_statements(
[f"SELECT * FROM baseline_{namespace}" for namespace, _, _ in KLAR_iOS_TUPLES]
)
search_query = search_query_template.render(
baseline_by_namespace="\n".join(queries),
fenix_baseline=fenix_combined_baseline,
ios_metrics=ios_combined_baseline,
android_focus_metrics=android_focus_combined_baseline,
android_klar_metrics=android_klar_combined_baseline,
ios_focus_metrics=ios_focus_combined_baseline,
ios_klar_metrics=ios_klar_combined_baseline,
)
write_sql(
output_dir=output_dir,
full_table_id=f"{target_project}.{DATASET}.{TABLE_NAME}",
basename="query.sql",
sql=reformat(search_query),
skip_existing=False,
)
write_sql(
output_dir=output_dir,
full_table_id=f"{target_project}.{DATASET}.{TABLE_NAME}",
basename="metadata.yaml",
sql=render(
metadata_template,
template_folder=base_dir / "templates",
format=False,
),
skip_existing=False,
)