Skip to content

Commit 0e151dd

Browse files
implement review feedback
1 parent 0152392 commit 0e151dd

File tree

1 file changed

+20
-19
lines changed

1 file changed

+20
-19
lines changed

macros/geo/haversine_distance.sql

+20-19
Original file line numberDiff line numberDiff line change
@@ -10,41 +10,42 @@ The arguments should be float type.
1010
acos(-1) * {{degrees}} / 180
1111
{%- endmacro %}
1212

13-
{% macro haversine_distance(lat1,lon1,lat2,lon2,unit='mi') -%}
13+
{% macro haversine_distance(lat1, lon1, lat2, lon2, unit='mi') -%}
1414
{{ return(adapter.dispatch('haversine_distance', packages = dbt_utils._get_utils_namespaces())(lat1,lon1,lat2,lon2,unit)) }}
1515
{% endmacro %}
1616

17-
{% macro default__haversine_distance(lat1,lon1,lat2,lon2,unit) -%}
18-
{# vanilla macro is in miles #}
19-
{% set conversion_rate = '' %}
20-
{% if unit == 'km' %}
21-
{# we multiply miles result to get it in kms #}
22-
{% set conversion_rate = '* 1.60934' %}
17+
{% macro default__haversine_distance(lat1, lon1, lat2, lon2, unit='mi') -%}
18+
{%- if unit == 'mi' %}
19+
{% set conversion_rate = 1 %}
20+
{% elif unit == 'km' %}
21+
{% set conversion_rate = 1.60934 %}
22+
{% else %}
23+
{{ exceptions.raise_compiler_error("unit input must be one of 'mi' or 'km'. Got " ~ unit) }}
2324
{% endif %}
2425

25-
2 * 3961 * asin(sqrt(pow((sin(radians(({{lat2}} - {{lat1}}) / 2))), 2) +
26+
2 * 3961 * asin(sqrt(pow((sin(radians(({{ lat2 }} - {{ lat1 }}) / 2))), 2) +
2627
cos(radians({{lat1}})) * cos(radians({{lat2}})) *
27-
pow((sin(radians(({{lon2}} - {{lon1}}) / 2))), 2))) {{conversion_rate}}
28+
pow((sin(radians(({{ lon2 }} - {{ lon1 }}) / 2))), 2))) * {{ conversion_rate }}
2829

2930
{%- endmacro %}
3031

3132

3233

33-
{% macro bigquery__haversine_distance(lat1,lon1,lat2,lon2,unit) -%}
34+
{% macro bigquery__haversine_distance(lat1, lon1, lat2, lon2, unit='mi') -%}
3435
{% set radians_lat1 = dbt_utils.degrees_to_radians(lat1) %}
3536
{% set radians_lat2 = dbt_utils.degrees_to_radians(lat2) %}
3637
{% set radians_lon1 = dbt_utils.degrees_to_radians(lon1) %}
3738
{% set radians_lon2 = dbt_utils.degrees_to_radians(lon2) %}
38-
{# vanilla macro is in miles #}
39-
{% set conversion_rate = '' %}
40-
{% if unit == 'km' %}
41-
{# we multiply miles result to get it in kms #}
42-
{% set conversion_rate = '* 1.60934' %}
39+
{%- if unit == 'mi' %}
40+
{% set conversion_rate = 1 %}
41+
{% elif unit == 'km' %}
42+
{% set conversion_rate = 1.60934 %}
43+
{% else %}
44+
{{ exceptions.raise_compiler_error("unit input must be one of 'mi' or 'km'. Got " ~ unit) }}
4345
{% endif %}
44-
45-
2 * 3961 * asin(sqrt(pow(sin(({{radians_lat2}} - {{radians_lat1}}) / 2), 2) +
46-
cos({{radians_lat1}}) * cos({{radians_lat2}}) *
47-
pow(sin(({{radians_lon2}} - {{radians_lon1}}) / 2), 2))) {{conversion_rate}}
46+
2 * 3961 * asin(sqrt(pow(sin(({{ radians_lat2 }} - {{ radians_lat1 }}) / 2), 2) +
47+
cos({{ radians_lat1 }}) * cos({{ radians_lat2 }}) *
48+
pow(sin(({{ radians_lon2 }} - {{ radians_lon1 }}) / 2), 2))) * {{ conversion_rate }}
4849

4950
{%- endmacro %}
5051

0 commit comments

Comments
 (0)