Szukam sposobu na uzyskanie HAVERSINE() w BigQuery. Na przykład, jak doprowadzić najbliższe stacje meteorologiczne do dowolnego punktu?Odległość HAVERSINE w BigQuery?
Odpowiedz
Korzystanie standard SQL można zdefiniować funkcję SQL do hermetyzacji logiki. Na przykład,
#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;
rozwiązanie Legacy SQL (standard Oczekuje):
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
(na podstawie http://www.plumislandmedia.net/mysql/haversine-mysql-nearest-loc/)
Przy standardowym SQL można umieścić logiki w SQL UDF zamiast umieścić go bezpośrednio do ciała kwerendy. –
Wiem! Zrobiłem szybką próbę, ale wtedy brakowało DEGREES() i RADIANS(). Pozostawiono zapytanie oczekujące, dopóki nie znajdę równoważnych transformacji, w tym braku PI(). Ale wrócę :) –
Przy okazji - to da odległość w km –
- 1. Formuła Haversine z php
- 2. Odwróć formułę Haversine dla MySQL?
- 3. Jak ćwiczyć formułę Haversine w ColdFusion
- 4. Numer wiersza w BigQuery?
- 5. Dane strumieniowe w BigQuery
- 6. BigQuery datatypes
- 7. W ulotce, jak obliczyć odległość pikseli między dwoma obiektami LatLng?
- 8. Dzielenie kolumny ciągów w BigQuery
- 9. Widok z parametrami w BigQuery
- 10. Jak zaimplementować "podobne" w BigQuery?
- 11. Google BigQuery Usunąć wiersze?
- 12. Wariacje cenowe Bigquery?
- 13. MongoDB do BigQuery
- 14. jak znaleźć prawidłową odległość między dwoma punktami geograficznymi na mapie?
- 15. BigQuery DOŁĄCZ Błąd
- 16. "Odległość" między kolorami w PHP
- 17. obliczeniowej geo odległość w elasticsearch
- 18. Czy możemy rzucić typ w BigQuery?
- 19. Wywoływanie wielu powtarzających się pól w BigQuery
- 20. BigQuery - Elastyczny schemat w polu rekordu
- 21. Eliminowanie duplikatów rekordów w tabeli BigQuery
- 22. Wybieranie różnych customDimensions w integracji BigQuery GA
- 23. Błąd w Google BigQuery <EOF>
- 24. Co oznacza pole REPEATED w Google Bigquery?
- 25. Czy można używać skrótu MD5 w BigQuery?
- 26. Oblicz odległość w (x, y) między dwoma punktami GPS
- 27. BigQuery: Zaintrygowany komunikatem o błędzie
- 28. Szydercze BigQuery do testów integracyjnych
- 29. Zapytania BigQuery zagnieżdżone/powtórzone pola
- 30. Łącza SQL z BigQuery łącznie
ref: https://twitter.com/joaocorreia/status/827638555035840512 –