企业很少缺数据,真正困难的是让不同数据描述同一个现实世界。门店销售记录、供应链指标和客户分群位于内部系统,人口、就业、气候与 GDP 等参考数据则散落在公共机构的数据集中。Data Commons on Spanner Graph 正式可用,以及新版 Data Commons Platform 进入预览,试图用统一实体、标准化统计变量和图关系把这两个世界连接起来。
规模不是唯一难点,语义一致性才是
Data Commons 汇集了联合国、世界银行、美国人口普查局、Eurostat、WHO 和 NOAA 等 100 多个权威提供方的数据,覆盖农业、人口、经济、环境和健康等领域。其规模包括 4000 多亿条统计观测、26 亿多条图边和 17 亿多个标准化实体。
这些数字的价值不只在于“大”,更在于数据已经经过清洗、归一化,并使用 Schema.org 定义组织实体和属性。例如,不同来源中的国家、行政区、统计变量和时间序列可以落到一致的概念上。应用不必为每个数据源重复处理地区编码、字段命名和维度定义,就能分析 GDP 趋势、烟霾污染、健康公平或人口分布。
知识图谱在这里承担两类工作:
- 用节点表示国家、城市、企业设施、统计变量等实体。
- 用边表达地理从属、类型、观测对象及其他领域关系。
- 用统计观测保存实体、变量、日期和数值之间的关联。
企业私有图谱可以沿用相同的实体模型,再通过联邦查询引用公共图谱,而不必复制全部公共数据,也不需要把私有明细上传到公共实例。
从预计算缓存转向原生图查询
早期 Data Commons 使用 Bigtable 作为缓存层,通过预先计算的索引支撑大规模查找。这在缺少原生图数据库能力时很实用,但会带来索引重建、多份快照和整库刷新等维护成本。
迁移到 Spanner Graph 后,实体成为节点,领域关系成为动态边,多跳关系可以通过原生 GQL 在查询时遍历。Spanner 同时提供横向扩展、多区域事务一致性、高可用性,以及类似 SQL 的数据操作体验。
这项变化直接影响数据管道:
- 增量更新:单独导入某个数据集,不必刷新整个数据库或重建全部内存索引。
- 动态遍历:可以即时执行“洲 → 国家 → 州 → 县 → 城市”这样的多跳查询。
- 一致快照:批量摄取期间可以借助 TrueTime 和 stale reads 读取版本一致的数据视图。
- 分析隔离:列式执行引擎只扫描需要的时间序列字段;复杂聚合还可通过 BigQuery 联邦查询和 Data Boost 与生产流量隔离。
下面是一个用于解释查询形态的 GQL 示例。这是概念性示例,节点标签、边类型和属性名需要按实际 Spanner Graph schema 修改:
GRAPH RetailKnowledgeGraph
MATCH
(country:Place)-[:CONTAINS]->(region:Place)-[:CONTAINS]->(city:Place),
(store:Store)-[:LOCATED_IN]->(city),
(store)-[:HAS_OBSERVATION]->(sales:Observation),
(region)-[:HAS_OBSERVATION]->(population:Observation)
WHERE sales.variable = 'MonthlySales'
AND population.variable = 'Count_Person'
AND sales.date = '2025-01'
AND population.date = '2025'
RETURN country.name, region.name,
SUM(sales.value) AS total_sales,
MAX(population.value) AS population;
在真实项目中,应让私有图保存门店、销售和库存等内部实体,将地区节点映射到公共 Data Commons 的标准实体标识。这样,查询规划器或 Data Agent 才能把自然语言问题转换成可靠的路径匹配,而不是依赖模糊的字符串连接。
SDMX 3.0 让统计数据接入现有工具链
Data Commons Platform 新增了对 SDMX 3.0 的精简实现,并通过 SDMX-JSON 和 SDMX-CSV 2.0 交换多维统计数据。这使 Tableau、Flourish 和 Observable 等工具更容易消费统一后的数据。
接口被划分为两类:
- Availability API 用于发现可用维度、统计变量和日期范围,不读取全部观测值。
- Data API 返回实际观测和元数据,并使用命名参数,降低新增维度导致现有客户端失效的风险。
预览实例的具体路径和参数由部署配置决定。拿到实例地址和访问令牌后,可以这样组织可复用的请求脚本;运行前需要将参数名调整为实例在 Availability API 中返回的名称:
#!/usr/bin/env bash
set -euo pipefail
: "${DC_BASE_URL:?Set DC_BASE_URL to your Data Commons Platform endpoint}"
: "${DC_TOKEN:?Set DC_TOKEN to an access token}"
curl --fail-with-body --silent --show-error \
--get "${DC_BASE_URL}/availability" \
--header "Authorization: Bearer ${DC_TOKEN}" \
--header "Accept: application/json" \
--data-urlencode "entity=country/USA" \
--data-urlencode "variable=Count_Person"
curl --fail-with-body --silent --show-error \
--get "${DC_BASE_URL}/data" \
--header "Authorization: Bearer ${DC_TOKEN}" \
--header "Accept: application/vnd.sdmx.data+csv;version=2.0" \
--data-urlencode "entity=country/USA" \
--data-urlencode "variable=Count_Person" \
--data-urlencode "start_date=2020" \
--data-urlencode "end_date=2025" \
--output observations.csv
这里值得保留“先发现、后取数”的调用顺序。客户端先检查变量、维度和时间范围,再生成数据请求,可以避免把某个数据集的维度结构硬编码进仪表盘或批处理任务。
私有图谱与公共图谱如何协作
Data Commons Platform 允许组织部署私有实例,控制内部数据和访问权限,同时将查询联邦到 Google 托管的公共 Data Commons 图谱。数据隔离是这套模式的核心:公共数据无需复制到企业库,私有数据也不必离开受控实例。
零售企业可以把销售历史、门店绩效和供应链数据保存在私有图中,再关联区域人口、就业和 GDP 等公共指标。分析人员由此可以比较宏观经济变化与企业交易,判断商品分配是否合理,或寻找尚未覆盖的市场。
GraphRAG 进一步把图遍历接入自然语言工作流。模型负责识别“地区”“指标”“时间范围”和“比较方式”,图数据库负责执行确定性的实体匹配与路径查询。需要注意,GraphRAG 并不会自动修复错误的数据映射:地区粒度、统计口径、单位和日期频率必须在摄取阶段明确记录。
落地时先守住四条边界
采用这套架构时,可以按以下顺序推进:
- 选择一个可验证的业务问题,例如比较门店销售与地区就业率,而不是一次性导入所有数据。
- 建立公共实体标识到内部主数据的映射表,并记录映射来源、置信度和版本。
- 用 Availability API 驱动变量发现,避免客户端硬编码维度;用命名参数调用 Data API。
- 将联邦分析与在线事务隔离,评估 Data Boost、BigQuery 联邦查询和 stale reads 的成本及延迟。
- 对自然语言生成的查询设置允许的图路径、时间范围和聚合规则,并保留原始查询与数据出处以供审计。
Spanner Graph 解决的是大规模关系存储、增量更新和一致读取问题,Data Commons 则提供标准化公共数据与语义模型。两者结合可以显著减少企业搭建知识图谱时的数据整理工作,但实体映射、统计口径、权限控制和查询治理仍然需要由业务与数据团队共同负责。