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, )