BigQuery StandardSQL udf для вызова внешних библиотек .jar - PullRequest
0 голосов
/ 29 августа 2018

Как мне вызвать внешние библиотеки Java в UDF bigquery. Возможно ли это?

Ниже приведен мой вариант использования: Можно ли сделать вычисления lat / long внутри стандартного UDF sql bigquery.

import org.gavaghan.geodesy.*;

...

GeodeticCalculator geoCalc = new GeodeticCalculator();

Ellipsoid reference = Ellipsoid.WGS84;  

GlobalPosition pointA = new GlobalPosition(latitude, longitude, 0.0); // Point A

GlobalPosition userPos = new GlobalPosition(userLat, userLon, 0.0); // Point B

double distance = geoCalc.calculateGeodeticCurve(reference, userPos, pointA).getEllipsoidalDistance(); 

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Вместо того, чтобы идти в направлении UDF, вы можете попробовать BigQuery GIS (общедоступная альфа) * ​​1001 *

На основе вашего примера - это может выглядеть примерно так, как показано ниже: упрощенный / глупый пример

#standardSQL
WITH start AS (
    SELECT 
        state_name state,
        CAST(internal_point_lat AS FLOAT64) lat, 
        CAST(internal_point_lon AS FLOAT64) lon
    FROM `bigquery-public-data.utility_us.us_states_area`
    WHERE state_name IN ('California', 'Arizona')
),  finish AS (
    SELECT 
        state_name state,
        CAST(internal_point_lat AS FLOAT64) lat, 
        CAST(internal_point_lon AS FLOAT64) lon
    FROM `bigquery-public-data.utility_us.us_states_area`
    WHERE state_name IN ('Florida', 'New York')
)
SELECT 
    start.state start,
    finish.state finish,
    ROUND(ST_DISTANCE(ST_GEOGPOINT(start.lon,start.lat),ST_GEOGPOINT(finish.lon,finish.lat))*0.000621371,2) distance
FROM start, finish    

Row start       finish      distance
1   California  Florida     2223.17
2   California  New York    2331.66
3   Arizona     Florida     1761.82
4   Arizona     New York    2019.12

Примечание: BQ-GIS находится в общедоступной альфа-версии, поэтому ваш проект GCP должен быть включен в белый список, чтобы выполнить эти запросы. Вы можете зарегистрироваться, чтобы запросить доступ здесь .

Обновление ( на основе комментария )

Понятно. таким образом, пример ГИС был просто «случайным» примером и вообще не был предметом обсуждения. Понял. Что касается UDF - в настоящее время BigQuery поддерживает только JavaScript и SQL UDF, а также поддерживаются внешние библиотеки JS UDF. Java / Python пока не повезло. Единственный другой сумасшедший вариант, который вы можете проверить - это использование веб-сборки.
Вы можете проверить несколько примеров, чтобы получить представление:

0 голосов
/ 29 августа 2018

UDF BigQuery поддерживают JavaScript в качестве языка, а не Java, поэтому невозможно вызвать внешнюю библиотеку Java. Однако вы можете загружать внешние библиотеки с помощью JavaScript UDF .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...