GA4 API中DOES_NOT_MATCH_REGEX过滤匹配类型无法正常使用
GA4 API 使用DOES_NOT_MATCH_REGEX过滤器时出现AttributeError的解决办法
问题根源在于GA4 API的Python客户端库枚举定义:Filter.StringFilter.MatchType中并没有DOES_NOT_MATCH_REGEX这个枚举值,网页端的同名选项和API的枚举逻辑不直接对应。要实现“排除匹配正则的sessionSourceMedium”,需要通过否定表达式包裹FULL_REGEXP过滤器来实现。
修改后的代码如下:
def run_ga4_report(property_id, property_name): # 构建匹配正则的过滤器,再用NOT表达式实现排除逻辑 filter_expression = FilterExpression( not_expression=FilterExpression( filter=Filter( field_name="sessionSourceMedium", string_filter=Filter.StringFilter( match_type=Filter.StringFilter.MatchType.FULL_REGEXP, value=filter_pattern ) ) ) ) # Build the request request = RunReportRequest( property=f"properties/{property_id}", date_ranges=[ {"start_date": DATE_RANGE_START, "end_date": DATE_RANGE_END} ], dimensions=[{"name": dim} for dim in dimensions_input], metrics=[{"name": metric} for metric in metrics_input], dimension_filter=filter_expression # Apply filter on sessionSourceMedium ) # Execute the GA4 API request try: response = client.run_report(request) except Exception as e: print(f"Error fetching data from GA4 API for property {property_name} (ID: {property_id}): {e}") return None
核心逻辑:先用FULL_REGEXP匹配你要排除的模式,再通过FilterExpression.not_expression将这个匹配逻辑取反,最终实现网页端“DOES_NOT_MATCH_REGEX”的效果。
内容的提问来源于stack exchange,提问作者Yogita Patel
相关产品推荐
相关产品推荐

