用途:指导通过 BigQuery CLI(bq)在 Monzo 的 BigQuery 项目中查询和检查表、数据集,重点是在保证数据敏感性的前提下获取元数据与结构信息。
主要能力:
- 查看表结构:用 INFORMATION_SCHEMA.COLUMNS 查询列名、类型、可空性、分区列等,不触及实际数据。
- 统计行数:用 COUNT(*) 检查表大小,对敏感表也安全。
- 列出数据集中的表:查询 INFORMATION_SCHEMA.TABLES。
- 查看表元数据:创建时间、大小(如 size_bytes)、行数等。
- 按名称模式查找表:如 table_name LIKE '%customer%'。
- 导出模式到文件:配合 --format=csv --quiet 与 tail -n +2 生成列名文件。
- 对非敏感表可采样:SELECT * ... LIMIT 10,并明确警告不可用于人员/员工/PII 表。
核心原则与用法:
- 始终显式指定项目,如 --project_id=monzo-analytics。
- 始终使用标准 SQL:--use_legacy_sql=false;表名用反引号写成
project.dataset.table。 - 优先使用 INFORMATION_SCHEMA 做元数据查询。
- 输出格式可选 --format=csv、json、prettyjson(默认),--quiet 关闭状态信息,--max_rows=100 限制返回行数。
- 常用项目:monzo-analytics、monzo-analytics-v2、monzo-analytics-pii(谨慎)、sanitized-events-prod、raw-analytics-events-prod。常见数据集:dims、prod、lending、slurpee。
- 可用 --dry_run 做成本估算,大结果可重定向到文件。
数据敏感性限制:
- 允许:INFORMATION_SCHEMA 查询、COUNT(*)、模式检查。
- 需谨慎:查询人员/员工数据、PII 表、客户财务数据、认证/安全表;不确定时应先询问用户。
- 禁止:从 people、staff、hibob 等表查询实际行;导出 PII 到本地文件;查询凭证或令牌;未经明确许可访问客户财务明细。
错误处理:遇到 “Not found: Table” 先用 INFORMATION_SCHEMA 确认表存在;"Access Denied" 可能缺少项目/数据集权限;“Syntax error” 检查是否使用标准 SQL 及反引号用法。
适用场景:查询 BigQuery 表或数据集、检查模式或列类型、统计行数、导出表元数据、运行 dbt 前验证源表、排查数据问题、按命名模式查找表,以及与 dbt 工作流集成。
注意:本资料未提供认证方式、具体计费价格、安装命令或平台限制等细节,相关事实暂未提供。