From 53cd5a0af006bb1b1d4466bb2ee0110ea576685f Mon Sep 17 00:00:00 2001 From: nmorvil <148054105+nmorvil@users.noreply.github.com> Date: Tue, 30 Apr 2024 23:51:15 +0200 Subject: [PATCH] feat: add dimension and metric filters (#186) fixes #47 --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- tap_google_analytics/client.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/tap_google_analytics/client.py b/tap_google_analytics/client.py index 010327b..b51f3ae 100644 --- a/tap_google_analytics/client.py +++ b/tap_google_analytics/client.py @@ -107,7 +107,12 @@ def _lookup_data_type(self, field_type, attribute, dimensions_ref, metrics_ref): @staticmethod def _generate_report_definition(report_def_raw): - report_definition = {"metrics": [], "dimensions": []} + report_definition = { + "metrics": [], + "dimensions": [], + "metricFilter": None, + "dimensionFilter": None, + } for dimension in report_def_raw["dimensions"]: report_definition["dimensions"].append({"name": dimension}) @@ -115,6 +120,12 @@ def _generate_report_definition(report_def_raw): for metric in report_def_raw["metrics"]: report_definition["metrics"].append(Metric(name=metric)) + if "metric_filter" in report_def_raw: + report_definition["metric_filter"] = report_def_raw["metric_filter"] + + if "dimension_filter" in report_def_raw: + report_definition["dimension_filter"] = report_def_raw["dimension_filter"] + # Add segmentIds to the request if the stream contains them if "segments" in report_def_raw: report_definition["segments"] = [ @@ -253,6 +264,8 @@ def _query_api(self, report_definition, state_filter, pageToken=None) -> RunRepo metrics=report_definition["metrics"], date_ranges=[DateRange(start_date=state_filter, end_date=self.end_date)], limit=self.page_size, + metric_filter=report_definition["metric_filter"], + dimension_filter=report_definition["dimension_filter"], offset=(pageToken or 0) * self.page_size, )