Я ищу способ получить HAVERSINE() в BigQuery. Например, как получить самые близкие метеостанции к произвольной точке?HAVERSINE расстояние в BigQuery?
ответ
Использование standard SQL вы можете определить функцию SQL для инкапсулирования логики. Например,
#standardSQL
CREATE TEMP FUNCTION RADIANS(x FLOAT64) AS (
ACOS(-1) * x/180
);
CREATE TEMP FUNCTION RADIANS_TO_KM(x FLOAT64) AS (
111.045 * 180 * x/ACOS(-1)
);
CREATE TEMP FUNCTION HAVERSINE(lat1 FLOAT64, long1 FLOAT64,
lat2 FLOAT64, long2 FLOAT64) AS (
RADIANS_TO_KM(
ACOS(COS(RADIANS(lat1)) * COS(RADIANS(lat2)) *
COS(RADIANS(long1) - RADIANS(long2)) +
SIN(RADIANS(lat1)) * SIN(RADIANS(lat2))))
);
SELECT
lat,
lon,
name,
HAVERSINE(40.73943, -73.99585, lat, lon) AS distance_in_km
FROM `bigquery-public-data.noaa_gsod.stations`
WHERE lat IS NOT NULL AND lon IS NOT NULL
ORDER BY distance_in_km
LIMIT 4;
решение Наследство SQL (стандарт заявлен):
SELECT lat, lon, name,
(111.045 * DEGREES(ACOS(COS(RADIANS(40.73943)) * COS(RADIANS(lat)) * COS(RADIANS(-73.99585) - RADIANS(lon)) + SIN(RADIANS(40.73943)) * SIN(RADIANS(lat))))) AS distance
FROM [bigquery-public-data:noaa_gsod.stations]
HAVING distance>0
ORDER BY distance
LIMIT 4
(на основе http://www.plumislandmedia.net/mysql/haversine-mysql-nearest-loc/)
Со стандартным SQL можно поставить логику в SQL UDF вместо того, чтобы поместить его непосредственно в тело запроса. –
Я знаю! Я сделал быструю попытку, но тогда мне не хватало DEGREES() и RADIANS(). Оставленный запрос не ожидается, пока я не выясню эквивалентные преобразования, в том числе отсутствие PI(). Но я вернусь :) –
Кстати - это даст расстояние в км –
- 1. Ошибка в формуле Haversine - неправильное расстояние - Arduino
- 2. Laravel красноречивого запрос + Haversine расстояние калькулятор
- 3. Расстояние между двумя координатами в php с использованием haversine
- 4. векторизация Haversine в Python
- 5. Как рассчитать короткое и длинное расстояние через Haversine?
- 6. Выполнение запроса на расстояние haversine на основе lng и lat
- 7. Расстояние между широтами и долготами, разделяющими метод haversine
- 8. Расстояние между лат/длинными точками с использованием формулы haversine
- 9. VBA haversine formula
- 10. Haversine формула рубина
- 11. Haversine в MySQL хранимой функции
- 12. определение формулы haversine для sql
- 13. Регистрация операции в формуле Haversine
- 14. Haversine и Laravel
- 15. Формула геолокации и Haversine
- 16. Haversine не дает мне правильный результат
- 17. haversine formula php/mysql
- 18. Query Haversine с JDO
- 19. SQL Haversine Formula
- 20. MySQL Функция для вычисления расстояния Haversine
- 21. Vectorised Haversine формула с пандами dataframe
- 22. MPI Haversine для расчета расстояний в C
- 23. A Более эффективная функция Haversine
- 24. Включающего Haversine с PHP PDO
- 25. Codeigniter и SQL/Haversine Формула
- 26. Как рисовать красноречивый запрос с формулой haversine
- 27. Формула Haversine возвращает null в запросе
- 28. Пакет Haversine Python в Django ORM-запрос
- 29. Расчет Haversine: Показать пользователей в наборе
- 30. Расчет расстояния Haversine между двумя точками в Laravel
исх: https://twitter.com/joaocorreia/status/827638555035840512 –