by Anonymous » Yesterday, 21:34
Ich verwende die Google Analytics 4 -Daten -API mit der Python Client Library, um Berichte auszuführen. Ich kann einen Bericht mit einer einzelnen Filterexpression ausführen, um den Verkehr zu filtern, in dem das Land "Vereinigte Staaten" entspricht. Jetzt möchte ich einen zweiten Filter hinzufügen, um Zeilen zurückzugeben, bei dem Country gleich "USA" und Region gleich "New York". Der Versuch, mehrere Filter zu übergeben, hat zu Fehlern geführt.
Code: Select all
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import (
DateRange,
Dimension,
Filter,
FilterExpression,
Metric,
RunReportRequest,
)
def sample_run_report(property_id):
client = BetaAnalyticsDataClient()
request = RunReportRequest(
property=f"properties/{property_id}",
dimensions=[
Dimension(name="country"),
Dimension(name="region")
],
metrics=[Metric(name="activeUsers")],
date_ranges=[DateRange(start_date="2020-03-31", end_date="today")],
dimension_filter=FilterExpression(
filter=Filter(
field_name="country",
string_filter=Filter.StringFilter(
value="United States",
match_type=Filter.StringFilter.MatchType.EXACT
)
)
), # TODO: Add second filter for New York region
)
response = client.run_report(request)
print("Report result:")
for row in response.rows:
dimension_values = [dimension.value for dimension in row.dimension_values]
metric_values = [metric.value for metric in row.metric_values]
print(" | ".join(dimension_values + metric_values))
if __name__ == '__main__':
# property_id is user-specific
sample_run_report(property_id="236813742")
Was ich ausprobiert habe:
Bereitstellung einer Liste von Filter für filter =
Code: Select all
dimension_filter=FilterExpression(
filter=[
Filter(
field_name="country",
string_filter=Filter.StringFilter(
value="United States",
match_type=Filter.StringFilter.MatchType.EXACT
)
),
Filter(
field_name="region",
string_filter=Filter.StringFilter(
value="New York",
match_type=Filter.StringFilter.MatchType.EXACT
)
)
]
)
# TypeError: Message must be initialized with a dict: google.analytics.data.v1beta.FilterExpression
Geben Sie eine Liste der Filterexpression s für Dimension_Filter =
an
Code: Select all
dimension_filter=[
FilterExpression(
filter=Filter(
field_name="country",
string_filter=Filter.StringFilter(
value="United States",
match_type=Filter.StringFilter.MatchType.EXACT
)
)
),
FilterExpression(
filter=Filter(
field_name="region",
string_filter=Filter.StringFilter(
value="New York",
match_type=Filter.StringFilter.MatchType.EXACT
)
)
)
]
# TypeError: Message must be initialized with a dict: google.analytics.data.v1beta.FilterExpression
Angabe eines und group mit einer Filterexpressionsliste mit Filtern, die in Expressions = .
angegeben sind
Code: Select all
dimension_filter=FilterExpression(
and_group=FilterExpressionList(
expressions=[
Filter(
field_name="country",
string_filter=Filter.StringFilter(
value="United States",
match_type=Filter.StringFilter.MatchType.EXACT
)
),
Filter(
field_name="region",
string_filter=Filter.StringFilter(
value="New York",
match_type=Filter.StringFilter.MatchType.EXACT
)
)
]
)
)
# TypeError: Parameter to MergeFrom() must be instance of same class: expected got .
Frage:
Wie kann ich mehr als einen Dimensionsfilter angeben, wenn die Google Analytics 4 -API aus der offiziellen Python -Client -Bibliothek verwendet wird?
Ich verwende die Google Analytics 4 -Daten -API mit der Python Client Library, um Berichte auszuführen. Ich kann einen Bericht mit einer einzelnen Filterexpression ausführen, um den Verkehr zu filtern, in dem das Land "Vereinigte Staaten" entspricht. Jetzt möchte ich einen zweiten Filter hinzufügen, um Zeilen zurückzugeben, bei dem Country gleich "USA" und Region gleich "New York". Der Versuch, mehrere Filter zu übergeben, hat zu Fehlern geführt.[code]from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import (
DateRange,
Dimension,
Filter,
FilterExpression,
Metric,
RunReportRequest,
)
def sample_run_report(property_id):
client = BetaAnalyticsDataClient()
request = RunReportRequest(
property=f"properties/{property_id}",
dimensions=[
Dimension(name="country"),
Dimension(name="region")
],
metrics=[Metric(name="activeUsers")],
date_ranges=[DateRange(start_date="2020-03-31", end_date="today")],
dimension_filter=FilterExpression(
filter=Filter(
field_name="country",
string_filter=Filter.StringFilter(
value="United States",
match_type=Filter.StringFilter.MatchType.EXACT
)
)
), # TODO: Add second filter for New York region
)
response = client.run_report(request)
print("Report result:")
for row in response.rows:
dimension_values = [dimension.value for dimension in row.dimension_values]
metric_values = [metric.value for metric in row.metric_values]
print(" | ".join(dimension_values + metric_values))
if __name__ == '__main__':
# property_id is user-specific
sample_run_report(property_id="236813742")
[/code]
[b] Was ich ausprobiert habe: [/b]
Bereitstellung einer Liste von Filter für filter =
[code]dimension_filter=FilterExpression(
filter=[
Filter(
field_name="country",
string_filter=Filter.StringFilter(
value="United States",
match_type=Filter.StringFilter.MatchType.EXACT
)
),
Filter(
field_name="region",
string_filter=Filter.StringFilter(
value="New York",
match_type=Filter.StringFilter.MatchType.EXACT
)
)
]
)
# TypeError: Message must be initialized with a dict: google.analytics.data.v1beta.FilterExpression
[/code]
Geben Sie eine Liste der Filterexpression s für Dimension_Filter =
an[code]dimension_filter=[
FilterExpression(
filter=Filter(
field_name="country",
string_filter=Filter.StringFilter(
value="United States",
match_type=Filter.StringFilter.MatchType.EXACT
)
)
),
FilterExpression(
filter=Filter(
field_name="region",
string_filter=Filter.StringFilter(
value="New York",
match_type=Filter.StringFilter.MatchType.EXACT
)
)
)
]
# TypeError: Message must be initialized with a dict: google.analytics.data.v1beta.FilterExpression
[/code]
Angabe eines und group mit einer Filterexpressionsliste mit Filtern, die in Expressions = .
angegeben sind[code]dimension_filter=FilterExpression(
and_group=FilterExpressionList(
expressions=[
Filter(
field_name="country",
string_filter=Filter.StringFilter(
value="United States",
match_type=Filter.StringFilter.MatchType.EXACT
)
),
Filter(
field_name="region",
string_filter=Filter.StringFilter(
value="New York",
match_type=Filter.StringFilter.MatchType.EXACT
)
)
]
)
)
# TypeError: Parameter to MergeFrom() must be instance of same class: expected got .
[/code]
[b] Frage: [/b]
Wie kann ich mehr als einen Dimensionsfilter angeben, wenn die Google Analytics 4 -API aus der offiziellen Python -Client -Bibliothek verwendet wird?