Skip to content

Commit

Permalink
implement review feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
bastienboutonnet committed Apr 17, 2021
1 parent 0152392 commit 0e151dd
Showing 1 changed file with 20 additions and 19 deletions.
39 changes: 20 additions & 19 deletions macros/geo/haversine_distance.sql
Original file line number Diff line number Diff line change
Expand Up @@ -10,41 +10,42 @@ The arguments should be float type.
acos(-1) * {{degrees}} / 180
{%- endmacro %}

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

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

2 * 3961 * asin(sqrt(pow((sin(radians(({{lat2}} - {{lat1}}) / 2))), 2) +
2 * 3961 * asin(sqrt(pow((sin(radians(({{ lat2 }} - {{ lat1 }}) / 2))), 2) +
cos(radians({{lat1}})) * cos(radians({{lat2}})) *
pow((sin(radians(({{lon2}} - {{lon1}}) / 2))), 2))) {{conversion_rate}}
pow((sin(radians(({{ lon2 }} - {{ lon1 }}) / 2))), 2))) * {{ conversion_rate }}

{%- endmacro %}



{% macro bigquery__haversine_distance(lat1,lon1,lat2,lon2,unit) -%}
{% macro bigquery__haversine_distance(lat1, lon1, lat2, lon2, unit='mi') -%}
{% set radians_lat1 = dbt_utils.degrees_to_radians(lat1) %}
{% set radians_lat2 = dbt_utils.degrees_to_radians(lat2) %}
{% set radians_lon1 = dbt_utils.degrees_to_radians(lon1) %}
{% set radians_lon2 = dbt_utils.degrees_to_radians(lon2) %}
{# vanilla macro is in miles #}
{% set conversion_rate = '' %}
{% if unit == 'km' %}
{# we multiply miles result to get it in kms #}
{% set conversion_rate = '* 1.60934' %}
{%- if unit == 'mi' %}
{% set conversion_rate = 1 %}
{% elif unit == 'km' %}
{% set conversion_rate = 1.60934 %}
{% else %}
{{ exceptions.raise_compiler_error("unit input must be one of 'mi' or 'km'. Got " ~ unit) }}
{% endif %}

2 * 3961 * asin(sqrt(pow(sin(({{radians_lat2}} - {{radians_lat1}}) / 2), 2) +
cos({{radians_lat1}}) * cos({{radians_lat2}}) *
pow(sin(({{radians_lon2}} - {{radians_lon1}}) / 2), 2))) {{conversion_rate}}
2 * 3961 * asin(sqrt(pow(sin(({{ radians_lat2 }} - {{ radians_lat1 }}) / 2), 2) +
cos({{ radians_lat1 }}) * cos({{ radians_lat2 }}) *
pow(sin(({{ radians_lon2 }} - {{ radians_lon1 }}) / 2), 2))) * {{ conversion_rate }}

{%- endmacro %}

0 comments on commit 0e151dd

Please sign in to comment.