json - 在 bigquery 中加载 geojson

标签 json load google-bigquery geojson

在 Google Big Query 中加载以下 geojson 文件的最佳方法是什么?

http://storage.googleapis.com/velibs/stations/test.json

我在 Google Storage 上有很多这样的 json 文件(大得多),我无法全部下载/修改/上传它们(这将花费很长时间)。请注意,该文件不是换行符分隔的,所以我想它需要在线修改。

谢谢大家。

最佳答案

一步一步2019:

如果您收到错误“读取数据时出错,错误消息:从位置 0 开始的行中的 JSON 解析错误:不允许嵌套数组。”,则您可能有一个 GeoJSON 文件。

使用 jq 将 GeoJSON 转换为换行分隔的 JSON ,以 CSV 格式加载到 BigQuery:

jq -c .features[] \
  san_francisco_censustracts.json > sf_censustracts_201905.json

bq load --source_format=CSV \
  --quote='' --field_delimiter='|' \
  fh-bigquery:deleting.sf_censustracts_201905 \
  sf_censustracts_201905.json row

在 BigQuery 中解析加载的文件:
CREATE OR REPLACE TABLE `fh-bigquery.uber_201905.sf_censustracts`
AS
SELECT FORMAT('%f,%f', ST_Y(centroid), ST_X(centroid)) lat_lon, *
FROM (
  SELECT *, ST_CENTROID(geometry) centroid
  FROM (
    SELECT 
      CAST(JSON_EXTRACT_SCALAR(row, '$.properties.MOVEMENT_ID') AS INT64) movement_id
      , JSON_EXTRACT_SCALAR(row, '$.properties.DISPLAY_NAME') display_name
      , ST_GeogFromGeoJson(JSON_EXTRACT(row, '$.geometry')) geometry
    FROM `fh-bigquery.deleting.sf_censustracts_201905` 
  )
)

替代方法:
  • 使用 ogr2ogr:
  • https://medium.com/google-cloud/how-to-load-geographic-data-like-zipcode-boundaries-into-bigquery-25e4be4391c8
  • https://medium.com/@mentin/loading-large-spatial-features-to-bigquery-geography-2f6ceb6796df
  • 使用 Node.js:
  • https://github.com/mentin/geoscripts/blob/master/geojson2bq/geojson2bqjson.js
  • 关于json - 在 bigquery 中加载 geojson,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24239056/

    相关文章:

    javascript - Jquery .load 未按预期工作

    BigQuery 中的正则表达式

    c# - 使用同一个类反序列化不同的可能对象

    javascript - 将重复出现的 JSON 名称转换为对象?

    javascript - 使用 JS for 循环解析 JSON 键和值

    单个元素上的 Jquery on() 加载事件

    Php 包括使用 ajax

    google-bigquery - 在 BigQuery 中使用 bq ls 命令列出数据集中的所有对象

    sql - 单个查询中的 Bigquery SQL Multiple Count group-by

    javascript - AngularJS 从 JSON 中提取 <img>