在bigquery中加载geojson

Bor*_*ris 7 json load geojson google-bigquery

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

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

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

谢谢大家。

Fel*_*ffa 5

2019年一步一步:

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

使用 将 GeoJSON 转换为换行符分隔的 JSON jq,并将其作为 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
Run Code Online (Sandbox Code Playgroud)

在 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` 
  )
)
Run Code Online (Sandbox Code Playgroud)

替代方法: