dbt-msft / tsql-utils

dbt-utils for the dbt-msft family of packages
MIT License
25 stars 24 forks source link

enable `web/` macros (e.g. `dbt_utils.get_url_parameter()`) #66

Open dataders opened 2 years ago

dataders commented 2 years ago

dbt_utils.get_url_parameter() doesn't work currently (neither does get_url_host or get_url_path).

I think it has to do with dbt_utils.split_part:

https://github.com/dbt-msft/tsql-utils/blob/23b11b7e209c6d91dcb539316fb6c09f32fd1e01/macros/dbt_utils/cross_db_utils/split_part.sql#L5-L9

dbt-utils's integration test message is:

('42000', '[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]XML parsing: line 1, character 56, semicolon expected (9411) (SQLMoreResults)')

this was the generated SQL by the integration tests...

with data as (
    select * from "dbt-msft-serverless-db"."test"."data_urls"
)

select
    nullif(

    LTRIM(CAST(('<X>'+REPLACE(

    LTRIM(CAST(('<X>'+REPLACE(url,'utm_medium=' ,'</X><X>')+'</X>') AS XML).value('(/X)[2]', 'VARCHAR(128)'))

,'&' ,'</X><X>')+'</X>') AS XML).value('(/X)[1]', 'VARCHAR(128)'))

    ,'') as actual,
    medium as expected

from data

union all

select
    nullif(

    LTRIM(CAST(('<X>'+REPLACE(

    LTRIM(CAST(('<X>'+REPLACE(url,'utm_source=' ,'</X><X>')+'</X>') AS XML).value('(/X)[2]', 'VARCHAR(128)'))

,'&' ,'</X><X>')+'</X>') AS XML).value('(/X)[1]', 'VARCHAR(128)'))

,'') as actual,
    source as expected

from data