返回

BigQuery Python UDF 新增日志可观测能力

RSS Google Cloud Data Analytics Blog AI 逐段翻译 发布 2026-10-19 08:00 收录于 10-20

有效阅读仅保存在当前浏览器,用于「为你」推荐;暂停或清除记录。

DataHot 速览

Google Cloud 宣布 BigQuery 的 Python UDF 支持标准 logging 库,可直接将结构化日志写入 Cloud Logging,无需外部插件或自定义连接器。文章以电商事件接入管道为例,展示内联校验、实时告警和 SQL 排查回放三阶段流程,帮助团队在查询执行中捕获行级诊断信息并隔离问题记录。

为什么值得关注:该功能直接增强 BigQuery 数据管道的可观测性与容错能力,对构建和运维数据接入、生产管道的从业者有实用价值。

本文目录 14 节
  1. 架构概览
  2. 快速入门演练:分步讲解
  3. 第 1 步:创建通用 Python UDF
  4. 第 2 步:启用日志记录后运行摄取
  5. 摄取结果
  6. 第 3 步:在 Cloud Logging 上设置实时告警
  7. 在 Google Cloud 控制台中(一键操作)
  8. 第 4 步:使用 BigQuery Log Analytics 分类处理坏行
  9. Log Analytics 输出
  10. 恢复数据
  11. 最终的 clean_events 表结果:
  12. 其他用例
  13. 最佳实践
  14. 快速上手

译文

AI 逐段翻译

我们正在宣布一项新的 日志记录功能 现已在 BigQuery 的 Python 用户定义函数(UDF)中可用。开发者现在可以直接在 BigQuery UDF 中使用 Python 的标准 logging 库,将结构化日志无缝发送到 Cloud Logging——无需任何外部插件或自定义连接器。

UDF 日志记录支持广泛的运维监控和调试工作流,为演示此功能,我们展示了一个构建容错、有韧性的数据管道的示例。在下面的示例中,我们在查询执行期间捕获行级诊断遥测数据,以便团队可以轻松隔离有问题的记录、触发实时告警,并通过 SQL 分类处理问题,而不会中断整个工作负载。

在本文中,我们将向你展示如何开始使用 Python UDF 日志记录,并作为一个实用的端到端示例,带你走一遍电子商务事件摄取管道。

架构概览

该工作流由三个阶段组成:

  1. 内联验证:Python UDF 解析传入的 JSON 载荷。有效记录会进入目标表;损坏或不符合要求的行会触发 logging.error() 并返回 NULL 以防止查询失败。
  2. 实时告警:基于日志的 Cloud Monitoring 指标会在错误率超过 SLA 阈值时通知你的团队。
  3. SQL 分类处理与重放:数据工程师通过关联的 _AllLogs 视图,使用标准 SQL 在 BigQuery 中查询被隔离的载荷,诊断根本原因,并重新摄取恢复的数据。

尽管此具体演示依赖 Python 进行数据验证和转换,但你可以将 Python 驱动的日志记录和验证无缝集成到执行基于 SQL 转换的管道中。

快速入门演练:分步讲解

第 1 步:创建通用 Python UDF

此 UDF 解析 JSON 并检查必需字段。如果解析失败或缺少必需键,它会记录结构化诊断 JSON 并返回 NULL。

正在加载……

第 2 步:启用日志记录后运行摄取

在此示例中,我们模拟一个处理传入用户操作(click、view、checkout)的电子商务事件摄取管道。我们的目标是将有效事件提取到干净的分析表中,同时优雅地隔离损坏或缺少 schema 的载荷。

使用 SET @@udf.properties 在会话中启用日志记录:

正在加载……

摄取结果

event_id user_id event_name status
evt_001 usr_101 click VALID
evt_004 usr_102 checkout VALID

查询成功完成且未中断,同时坏行(第 2 行和第 3 行)被路由到 Cloud Logging。

第 3 步:在 Cloud Logging 上设置实时告警

你可以配置告警,以便在格式错误的载荷超过可接受阈值时立即通知值班团队。

在 Google Cloud 控制台中(一键操作)

  1. 在 Google Cloud 控制台中,打开 Logs Explorer。
  2. 粘贴你的 UDF 例程的日志过滤器:

正在加载……

3. 点击 Create alert 位于顶部操作栏。

4. 设置你的通知渠道(例如 Slack、PagerDuty 或 Email)并保存该政策。

第 4 步:使用 BigQuery Log Analytics 分类处理坏行

"注意:要通过 BigQuery SQL 查询你的日志,请确保你已在 Cloud Logging 存储桶上启用 BigQuery Log Analytics 并创建了关联数据集。"

通过关联的 _AllLogs 视图,使用 BigQuery SQL 查询被隔离的载荷:

正在加载……

Log Analytics 输出

timestamp severity error_type missing_key raw_payload
2026-09-17 18:35:50 ERROR MISSING_REQUIRED_KEY user_id {"event": "view"}
2026-09-17 18:35:50 ERROR JSON_SYNTAX_ERROR null corrupted_json{

恢复数据

由于完整的原始载荷保留在 Cloud Logging 中,一旦上游数据修复,你就可以直接用 SQL 恢复被隔离的记录:

正在加载……

最终的 clean_events 表结果:

event_id user_id event_name status
evt_001 usr_101 click VALID
evt_004 usr_102 checkout VALID
evt_003_recovered default_user view RECOVERED

所有有效和已恢复的数据现已统一到生产表中,没有任何数据丢失。

其他用例

  • 影子执行与安全迁移:在 UDF 中并排运行旧版和新版业务逻辑。将旧版结果返回到生产环境,同时将计算差异记录到 Cloud Logging。
  • PII 脱敏审计:在写入 BigQuery 之前掩码敏感令牌(例如 SSN 或账号),同时向 Cloud Logging 发送匿名化审计事件。
  • ML 推理漂移:当嵌入式评分逻辑遇到词汇表外输入或低模型置信度时记录警告。

最佳实践

  • 启用调试输出:在希望捕获日志的会话中包含 SET @@udf.properties = JSON '{"enableDebugOutput": true}';。
  • 避免在日志中记录敏感数据:Cloud Logging 对拥有 Logging Viewer 权限的用户可见。请勿记录凭据或机密。
  • 成本管理:在高吞吐量管道上,有选择性地记录日志(例如仅在出错时或通过采样),以管理日志摄取量。

快速上手

发布于

这篇内容对你有用吗?

反馈只用于改善内容筛选,不等同于收藏

分享这条资讯
分享海报
保存图片
iOS 也可以长按图片保存