BigQuery运行ga_sessions表增量ETL时STRUCT字段读取错误问题咨询
报错原因
该错误是由于你在查询/ETL逻辑中,将trafficSource.adwordsClickInfo.targetingCriteria设为了必填STRUCT类型,但11月16日分区的部分数据中该字段为空、或嵌套子字段结构不匹配,触发了类型校验失败。GA官方输出的原始会话表所有字段默认均为可空(NULLABLE),仅当日的部分广告点击数据未回传定向规则内容,才会仅单日触发报错。
定位异常记录方法
执行以下查询即可捞出11月16日分区中所有触发报错的异常行(请替换表名和STRUCT内的子字段定义为你实际的结构):
SELECT fullVisitorId, visitId, trafficSource.adwordsClickInfo FROM `你的项目ID.你的数据集名.ga_sessions_20231116` -- 安全访问返回NULL即代表该字段不符合要求 WHERE SAFE.trafficSource.adwordsClickInfo.targetingCriteria IS NULL -- 排除adwordsClickInfo本身为空的正常非广告流量 AND trafficSource.adwordsClickInfo IS NOT NULL
忽略异常记录的解决方案
根据你的业务需求选择以下任意一种方案即可:
- 方案一:查询时用
SAFE.前缀访问该STRUCT字段,访问异常时会自动返回NULL而非触发报错,示例:-- 把原来的字段引用 trafficSource.adwordsClickInfo.targetingCriteria.campaignId -- 改成 SAFE.trafficSource.adwordsClickInfo.targetingCriteria.campaignId - 方案二:在查询的WHERE条件中新增过滤规则,直接排除异常行:
WHERE SAFE.trafficSource.adwordsClickInfo.targetingCriteria IS NOT NULL - 方案三:如果是ETL输出表的字段约束问题,将输出表中
targetingCriteria字段的模式从必填(REQUIRED)修改为可空(NULLABLE)即可。
内容的提问来源于stack exchange,提问作者Hemanth Kumar
相关产品推荐
相关产品推荐

