BigQuery 中是不是存在用于从东、北转换为纬度、经度的 UDF?

Posted

技术标签:

【中文标题】BigQuery 中是不是存在用于从东、北转换为纬度、经度的 UDF?【英文标题】:Does there exist a UDF to convert from Easting, Northing to latitude, longitude within BigQuery?BigQuery 中是否存在用于从东、北转换为纬度、经度的 UDF? 【发布时间】:2016-10-27 10:57:01 【问题描述】:

我使用 BigQuery 中的 BNG 系统获得了大量的东、北点。

通常我将它们读入 r 然后转换(从 CRS("+init=epsg:27700") 到 CRS("+init=epsg:4326"))。

是否可以在 BigQuery 中实际使用 UDF 来执行此操作?

这里有 JS 代码:http://www.movable-type.co.uk/scripts/latlong-os-gridref.html 进行转换。

我将如何真正将其转换为 UDF,特别是然后能够在 bigrquery 中使用 UDF?

谢谢!

【问题讨论】:

【参考方案1】:

要在 UDF 中使用此 javascript 代码,您可以:

在GCS 上存储您要使用的 JavaScript 文件的副本。 Enable standard SQL 供您查询。 在查询本身中,使用CREATE TEMP FUNCTION 定义UDF。使用OPTIONS 子句并指定要加载的library paths。

最终的查询看起来像这样:

CREATE TEMP FUNCTION ConvertCoordinate(input STRING)
  RETURNS STRING
  LANGUAGE js AS
"""
    // Assumes 'jsConvertCoordinate' is defined in one of the library files.
    return jsConvertCoordinate(input);
"""
OPTIONS (
  library="gs://my-bucket/path/to/lib1.js",
  library="gs://my-bucket/path/to/lib2.js"
);

SELECT ConvertCoordinate(coordinate) AS converted_coordinate
FROM MyTable;

【讨论】:

以上是关于BigQuery 中是不是存在用于从东、北转换为纬度、经度的 UDF?的主要内容,如果未能解决你的问题,请参考以下文章

检查 Airflow 中是不是存在 Bigquery 分区

在插入 BigQuery 表之前检查数据是不是已经存在(使用 Python)

BigQuery - 将通用 JSON 转换为 STRUCT

bigquery:GROUP BY 列表中不存在表达式“f0_”

BigQuery 时区转换

在bigquery中转换整个表的时间戳