From f08ed4ef0e8011f05a44a9a8543eb13e0478e788 Mon Sep 17 00:00:00 2001 From: Yam ZhengLim Date: Sat, 20 May 2023 13:28:46 +0000 Subject: [PATCH] geocode external function define --- analyses/call_eudf_address_to_coordinates.sql | 24 +++++++++++++++---- macros/address_to_coordinates.sql | 4 ++-- models/marts/warehouse/geo_loc_test.sql | 4 ++++ 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/analyses/call_eudf_address_to_coordinates.sql b/analyses/call_eudf_address_to_coordinates.sql index e1959d9..5a1d1fd 100644 --- a/analyses/call_eudf_address_to_coordinates.sql +++ b/analyses/call_eudf_address_to_coordinates.sql @@ -1,5 +1,19 @@ -select - company_address_id, - district_id, - {{ address_to_coordinates( 'company_address_id', 'district_id' ) }} as output_1 -from {{ ref('test_address__mock_data') }}; +-- This block of code returns the entire json +-- select +-- ADDRESS_LINE_ONE, +-- ADDRESS_LINE_TWO, +-- {{ address_to_coordinates( 'ADDRESS_LINE_ONE', 'ADDRESS_LINE_TWO', 'POSTCODE', 'DISTRICT_NAME', 'STATE_NAME' ) }} as output_1 +-- from {{ ref('test_address__mock_data') }}; + +-- This block of code returns the latitude, longitude, metadata, every data column +WITH json_data AS ( + SELECT PARSE_JSON( {{ address_to_coordinates( 'ADDRESS_LINE_ONE', 'ADDRESS_LINE_TWO', 'POSTCODE', 'DISTRICT_NAME', 'STATE_NAME' ) }} ) AS response + from {{ ref('test_address__mock_data') }} +) +SELECT + response[0]:geometry:location:lat::float AS LATITUDE, + response[0]:geometry:location:lng::float AS LONGITUDE, + response AS METADATA, + t.* +FROM json_data +CROSS JOIN {{ ref('test_address__mock_data') }} AS t; \ No newline at end of file diff --git a/macros/address_to_coordinates.sql b/macros/address_to_coordinates.sql index 59e5c9d..18f823b 100644 --- a/macros/address_to_coordinates.sql +++ b/macros/address_to_coordinates.sql @@ -1,5 +1,5 @@ -- Macro to call EUDF stored in snowflake -- id, created_datetime, updated_datetime, reference, address_1, address_2, postcode, district, state, country -{%- macro address_to_coordinates(column1, column2) -%} - GLOBAL_FUNCTION.EUDF.ECHO_ADDRESS_TO_COORDINATES({{column1}}, {{column2}}) +{%- macro address_to_coordinates(column1, column2, column3, column4, column5) -%} + GLOBAL_FUNCTION.EUDF.ECHO_ADDRESS_TO_COORDINATES({{column1}}, {{column2}}, {{column3}}, {{column4}}, {{column5}}) {%- endmacro -%} diff --git a/models/marts/warehouse/geo_loc_test.sql b/models/marts/warehouse/geo_loc_test.sql index e69de29..c20f2fb 100644 --- a/models/marts/warehouse/geo_loc_test.sql +++ b/models/marts/warehouse/geo_loc_test.sql @@ -0,0 +1,4 @@ +select + company_address_id, + echo_address_to_coordinates(company_address_id, district_name) +from {{ ref('test_address__mock_data') }} \ No newline at end of file