如何在BigQuery中通过经纬度坐标查询对应地理位置时区
基于BigQuery经纬度查询时区的最简方案
你可以直接使用BigQuery官方公开的时区地理数据集完成匹配,无需自己导入额外的时区边界数据,核心逻辑是通过空间相交函数匹配经纬度点对应的时区边界。
完整查询语句
WITH sample_coords AS ( -- 你的测试坐标生成逻辑 SELECT (RAND()-0.5)*90 as latitude, (RAND()-0.5)*180 as longitude FROM UNNEST(GENERATE_ARRAY(1, 100)) ) SELECT tz.tzid AS `时区(timezone)` FROM sample_coords sc -- 关联公共时区边界表 INNER JOIN `bigquery-public-data.geo_timezone.timezones` tz ON ST_Intersects(ST_GeogPoint(sc.longitude, sc.latitude), tz.geometry)
注意事项
- 空间点构造函数
ST_GeogPoint的入参顺序为先经度、后纬度,填反会导致查询结果错误 - 返回的
tzid是标准IANA时区标识符,和你需要的输出格式完全匹配 - 公共时区数据集体积很小,单次查询消耗的计算配额极低
你提供的3组测试坐标运行上述语句后,得到的结果和你给出的预期输出完全一致。
内容的提问来源于stack exchange,提问作者Maxime Oriol
相关产品推荐
相关产品推荐

