在Google Cloud里启用两项API,给Google专用导出账号授权,再到Search Console的设置 → 批量数据导出填写项目ID、数据集和地区,就能开始每日导出。首批最多需要48小时;到时要分别看资源表和网址表,配置已启用、只到了一张表,都不能说明第一批已齐。以前的数据不会自动补回。Google设置说明
Search Console(GSC,Google站长工具)提供网站的搜索表现数据;BigQuery是Google Cloud里保存和查询数据的服务。下面适合已有GSC所有者权限、带计费的Cloud项目和获准预算的网站负责人。Cloud有免费用量,超过相应用量的存储和查询仍会收费。
用AB120产品网站走一遍:项目、日期和结果都是教学设定,请换成自己的值。本文没有连接真实账户运行导出。
在Cloud给导出账号授权
先打开Google Cloud控制台,用顶部项目选择器选公司批准的项目,记下项目ID(Project ID)。本例是ab120-search-data,旁边纯数字123456789012是项目编号(Project number),GSC要填前者。
这次配置用以下三项。数据集可以理解为存放这份搜索数据的“文件夹”;另一个GSC资源若也导出到同一项目,应使用不同的数据集名。
| 设置 | 本例已确认的值 |
|---|---|
| Cloud项目ID | ab120-search-data |
| 数据集名称 | searchconsole_ab120 |
| 数据集地点 | US |
地点按公司的数据存放要求决定,不能因为例子写US就照选。导出开始后,地区不容易更换,先问清楚再提交。你在GSC里是所有者,也不代表能修改Cloud项目;下面两项若无法启用或保存,交Cloud管理员办理。网站资源还没验证的,先完成Search Console设置。
先启用两项API。在所选项目打开 APIs & Services → Enabled APIs & Services(API和服务 → 已启用的API和服务),查看BigQuery API和BigQuery Storage API。缺哪项,就点 Enable APIs and Services,搜索完整名称,再点 Enable。API是服务之间连接的接口,两项都要启用。
再给专用账号两项角色。进入 IAM & Admin → IAM(IAM和管理 → IAM),点 Grant access(授予访问权限),在 New principals粘贴:
添加BigQuery Job User和BigQuery Data Editor两个角色,第二个通过添加其他角色加入。前者让账号执行任务,后者让它写数据。点 Save后,在IAM成员列表搜索这个账号,确认两项角色都在;已启用列表里也应有前面的两项API。
授权对象是Google的专用导出账号,照这两个角色即可,无需给个人增加管理员权限。Google列出的API与权限
在GSC开始每日导出
打开GSC,用左上资源选择器切到AB120网站,本例是sc-domain:example.com网域资源。进入 设置 → 批量数据导出(Bulk data export)。看不到入口或不能操作,先让该资源的所有者处理。
按刚才的记录填写三格:
- Cloud project ID填
ab120-search-data,不用纯数字项目编号。 - Dataset name填
searchconsole_ab120。名字必须以searchconsole开头,且没有被另一资源的导出占用。 - Dataset location选公司确认的地点,本例才是
US。
点 Continue确认并开始导出,记下提交时间。页面若立即报权限、项目或地点错误,先处理该错误;成功配置后,首批最多等48小时。Google会在首次导出时创建数据集和表,不需要提前建空表。
首次包含首个导出日的数据,后续每天写入,时间会变化。先等真实首批日期,再查对应数据,不要提交后立刻查询“北京时间昨天”。之前的历史只能另从GSC报告或API获取,并标明来源。首次导出与历史数据范围
第一批要查两张表的同一天
回Cloud选原项目,打开 BigQuery → Explorer(资源浏览器),展开ab120-search-data,再展开searchconsole_ab120。看不到项目,可用Explorer的添加功能按项目ID添加;看不到数据集,先核项目、首批等待时间和查看权限。
导出会建三张表:searchdata_site_impression是按网站资源汇总的资源表,searchdata_url_impression是按网址汇总的网址表,ExportLog是导出日志。两张数据表分开写,时间可能不同;两边都要有同一天的成功日志和对应数据,只有一边到,先记未齐。只见三张表名还不够。表和日志说明
先用日志找到日期
打开 SQL query(SQL查询)编辑器,粘贴下面的指令,把项目ID和数据集名换成自己的。SQL就是向表提出问题;这一段问“最近哪一天、哪张表已写入”。查看编辑器显示的预计处理数据量,确认在批准预算内,再点 Run(运行)。后面的查询也按这个方法运行。
SELECT data_date, namespace, publish_time, epoch_version
FROM `ab120-search-data.searchconsole_ab120.ExportLog`
ORDER BY data_date DESC, publish_time DESC
LIMIT 20;
读结果时,先看data_date和namespace:前者是点击、展示属于哪一天,按太平洋时间计算;后者说明写的是哪张表。publish_time是写入完成时间,不能拿它代替数据日期。epoch_version首次通常为0,若Google后来修订同日数据,版本会增加。
例如以下是教学记录,表用途帮助你辨认实际namespace,不是本文查到的真实结果:
| data_date | namespace对应的表 |
|---|---|
| 2026-10-03 | 资源表 |
| 2026-10-03 | 网址表 |
两行表示该日两张表都已成功写入。现在若只有第一行,就记“10月3日资源表已到,网址表待确认”,转下一节看GSC最近尝试。ExportLog只记成功,缺的一行不会附上失败原因。
用这个日期查两张表
在Explorer分别打开两张数据表,点 Schema(结构)看字段、Preview(预览)看数据。两表都有data_date、site_url、clicks、impressions,网址表还多一个url。本例site_url应对应sc-domain:example.com;url才是某个具体落地网址。
预览可能显示其他日期,所以再用下面的查询准确核对。替换两个表路径,并把两处日期都改成日志里的data_date。示例2026-10-03不是预测你的首批日期。
SELECT '资源表' AS checked_table, data_date, site_url,
SUM(clicks) AS clicks, SUM(impressions) AS impressions
FROM `ab120-search-data.searchconsole_ab120.searchdata_site_impression`
WHERE data_date = DATE '2026-10-03'
GROUP BY data_date, site_url
UNION ALL
SELECT '网址表' AS checked_table, data_date, site_url,
SUM(clicks) AS clicks, SUM(impressions) AS impressions
FROM `ab120-search-data.searchconsole_ab120.searchdata_url_impression`
WHERE data_date = DATE '2026-10-03'
GROUP BY data_date, site_url;
结果应分别有“资源表”“网址表”,日期相同,site_url对应所选网站资源。限定一天减少读取范围;SUM把当天指标加总,因为原始数据可能有重复组合的多行,拿其中一行会漏掉其他行。UNION ALL只把两份结果放在一张结果表里,两表的数字不必相同,也不能再相加。查询与汇总指南
只有一份结果,先核两处日期和表名;对应日志也缺失,就按未齐处理。两份成功日志都有但查询无行,回GSC效果报告选同一资源、同一天,确认是否本来没有搜索数据,再请维护者结合实际导出情况核查。无查询权限时,请负责人返回这两表同日结果。
有些query为空,是Google对低频查询的隐私处理,不能还原具体搜索词。这段汇总保留了这些行的指标,空查询词不等于数据没到;以后若只统计已知词,要说明排除了匿名部分。
现在你能记下实际首批日期、两种成功日志和两表数据;该日无数据则记核实后的情况。确认后再做网站搜索效果分析,无需先学复杂仓库查询。
缺一张表或报错,先看GSC最近尝试
回正确GSC资源的 设置 → 批量数据导出,打开最近一次尝试,保存原始错误。GSC只显示最近尝试,ExportLog只记成功;要查更早的错误,维护者可在Cloud Logs Explorer搜索search-console-data-export。错误与重试说明
错误不同,修改的位置也不同:
- 项目不存在、缺权限或API:先对项目ID,再查专用账号两项角色和两项API。项目编号填错时,增加权限也解决不了。
- 数据集已占用、地区不一致:查是否另一资源用了同名数据集、所选地点是否对应实际地点。配置时可选未占用名称或改为正确地点,不删除别人正在用的数据。
- 计费、配额、组织限制:把原错误交Cloud负责人,处理账单、限额或组织规则。
- Schema mismatch(表结构不一致):告诉维护者近期谁改过原表,由他处理;不要自行删表重建,已有数据可能丢失。
例如首批只到资源表,又看到权限错误,可以交这一份教学记录。把时间和状态换成你真实读到的值:
GSC资源:sc-domain:example.com
项目ID:ab120-search-data
数据集:searchconsole_ab120;地点:US
配置时间:10月3日09:00,北京时间
首批:data_date 2026-10-03只有资源表成功日志;网址表未确认
GSC最近错误:Missing permissions in Cloud project
请Cloud管理员核专用导出账号的BigQuery Job User、BigQuery Data Editor
修后测试配置,次日再查两种成功日志及两表同日数据
保留90天已获批准,尚未设置,等表创建后再设置并读回
修好后可以点 Test report,它检查容易检测的配置,例如项目和访问权限;不会发起一次新导出,也不检查所有条件,例如配额。大约一天后看最近尝试,再查真实数据。未知错误或超时可看下一轮,同时保留出错时间;一直点测试不能催数据。
权限等问题要尽早处理:某天失败数据通常只重试约一周;持续约一个月失败,批量导出可能停止。记录缺哪一表、原错误和负责的人,接手者就知道应修授权还是继续等下一轮。
已有项目和预算、需要把每日导出与后续分析接起来,可了解Google SEO管理服务。联系表单提供网站、阶段、所需服务、预算、启动时间和具体错误即可,无需提交账号密钥;先判断能否由现有管理员处理。
可选:把两张表保留期设为90天
首批确认后,再按负责人批准的保留期管理存储。数据默认可能一直积累,也受项目或组织默认设置影响。Google要求分区保留至少14天;分区是按日期保存的一块数据,过期时逐日清理。不要给整张表设删除日期,也不要向导出的原表添加或修改列。
本例获准保留90天。有修改表权限的维护者,在BigQuery查询编辑器把路径和天数换成实际值后,分别运行:
ALTER TABLE `ab120-search-data.searchconsole_ab120.searchdata_site_impression`
SET OPTIONS (partition_expiration_days = 90);
ALTER TABLE `ab120-search-data.searchconsole_ab120.searchdata_url_impression`
SET OPTIONS (partition_expiration_days = 90);
这是修改真实设置的代码,先确认需要保留哪些历史;较短的新期限可能让已经超期的旧分区立即过期。分区过期设置
执行后分别打开两表 Details(详情)看分区过期设置,或运行下面的读回查询。查询处理地点要与数据集相同,本例为US。
SELECT table_name, option_value AS partition_expiration_days
FROM `ab120-search-data.searchconsole_ab120.INFORMATION_SCHEMA.TABLE_OPTIONS`
WHERE option_name = 'partition_expiration_days'
AND table_name IN ('searchdata_site_impression', 'searchdata_url_impression');
本例应有两表各自的90。缺记录、数值不对、地点或权限报错,交Cloud管理员核实际配置,不能凭“已运行”认定两表都设置好了。保留设置查询字段
常见问题
开通后能自动拿到之前16个月的数据吗?
不能,每日导出从首次导出日开始。之前的数据另从GSC报告或API获取,并标明来源;不会因为配置成功就自动补进首批。
BigQuery有免费用量,我可以不管费用吗?
不可以,项目需要有效计费,超出相应用量的存储和查询会收费。先确定预算与保留期,查询前看预计处理量;分区保留也不能为省钱设到14天以下。
Test report通过了,为什么表里还没有新数据?
它只检查部分配置,不启动导出。首次成功配置后最多等48小时;修复后约一天再看最近尝试。最后仍以实际data_date的两份成功日志和两张表的数据判断,反复点测试不会加快写入。