diff --git a/models/silver/prices/silver__complete_provider_asset_metadata.sql b/models/silver/prices/silver__complete_provider_asset_metadata.sql index dcc8416..3680e3b 100644 --- a/models/silver/prices/silver__complete_provider_asset_metadata.sql +++ b/models/silver/prices/silver__complete_provider_asset_metadata.sql @@ -6,45 +6,52 @@ tags = ['silver_prices','scheduled_core'] ) }} -SELECT - asset_id AS provider_asset_id, - UPPER( - CASE - WHEN len(TRIM(token_address)) = 56 THEN token_address - ELSE SPLIT_PART( - token_address, - '-', - 2 - ) - END - ) AS asset_issuer, - UPPER( - CASE - WHEN token_address LIKE '%-%' THEN SPLIT_PART( - token_address, - '-', - 1 - ) - ELSE symbol - END - ) AS asset_code, - NAME, - UPPER(symbol) AS symbol, - platform, - platform_id, - provider, - source, - _inserted_timestamp, - SYSDATE() AS inserted_timestamp, - SYSDATE() AS modified_timestamp, - {{ dbt_utils.generate_surrogate_key(['complete_provider_asset_metadata_id']) }} AS complete_provider_asset_metadata_id, - '{{ invocation_id }}' AS _invocation_id -FROM - {{ ref( - 'bronze__complete_provider_asset_metadata' - ) }} -WHERE - len(asset_issuer) > 0 +WITH base AS( + + SELECT + asset_id AS provider_asset_id, + SPLIT_PART( + token_address, + '-', + 1 + ) seg1, + SPLIT_PART( + token_address, + '-', + 2 + ) seg2, + UPPER( + CASE + WHEN len(TRIM(token_address)) = 56 THEN token_address + WHEN token_address ILIKE '%-%' + AND len(seg1) > len(seg2) THEN seg1 + WHEN token_address ILIKE '%-%' + AND len(seg2) > len(seg1) THEN seg2 + END + ) AS asset_issuer, + UPPER( + CASE + WHEN token_address ILIKE '%-%' + AND len(seg1) > len(seg2) THEN seg2 + WHEN token_address ILIKE '%-%' + AND len(seg2) > len(seg1) THEN seg1 + ELSE symbol + END + ) AS asset_code, + NAME, + UPPER(symbol) AS symbol, + platform, + platform_id, + provider, + source, + _inserted_timestamp, + complete_provider_asset_metadata_id + FROM + {{ ref( + 'bronze__complete_provider_asset_metadata' + ) }} + WHERE + len(asset_issuer) > 0 {% if is_incremental() %} AND modified_timestamp >= ( @@ -56,3 +63,21 @@ AND modified_timestamp >= ( {{ this }} ) {% endif %} +) +SELECT + provider_asset_id, + asset_issuer, + asset_code, + NAME, + symbol, + platform, + platform_id, + provider, + source, + _inserted_timestamp, + SYSDATE() AS inserted_timestamp, + SYSDATE() AS modified_timestamp, + {{ dbt_utils.generate_surrogate_key(['complete_provider_asset_metadata_id']) }} AS complete_provider_asset_metadata_id, + '{{ invocation_id }}' AS _invocation_id +FROM + base diff --git a/models/silver/prices/silver__complete_token_asset_metadata.sql b/models/silver/prices/silver__complete_token_asset_metadata.sql index b678ceb..2965e37 100644 --- a/models/silver/prices/silver__complete_token_asset_metadata.sql +++ b/models/silver/prices/silver__complete_token_asset_metadata.sql @@ -10,23 +10,31 @@ WITH providers AS ( SELECT asset_id AS provider_asset_id, + SPLIT_PART( + token_address, + '-', + 1 + ) seg1, + SPLIT_PART( + token_address, + '-', + 2 + ) seg2, UPPER( CASE WHEN len(TRIM(token_address)) = 56 THEN token_address - ELSE SPLIT_PART( - token_address, - '-', - 2 - ) + WHEN token_address ILIKE '%-%' + AND len(seg1) > len(seg2) THEN seg1 + WHEN token_address ILIKE '%-%' + AND len(seg2) > len(seg1) THEN seg2 END ) AS asset_issuer, UPPER( CASE - WHEN token_address LIKE '%-%' THEN SPLIT_PART( - token_address, - '-', - 1 - ) + WHEN token_address ILIKE '%-%' + AND len(seg1) > len(seg2) THEN seg2 + WHEN token_address ILIKE '%-%' + AND len(seg2) > len(seg1) THEN seg1 ELSE symbol END ) AS asset_code, diff --git a/models/silver/prices/silver__complete_token_prices.sql b/models/silver/prices/silver__complete_token_prices.sql index b52daec..a7fc338 100644 --- a/models/silver/prices/silver__complete_token_prices.sql +++ b/models/silver/prices/silver__complete_token_prices.sql @@ -12,23 +12,31 @@ WITH providers AS ( SELECT HOUR, asset_id AS provider_asset_id, + SPLIT_PART( + token_address, + '-', + 1 + ) seg1, + SPLIT_PART( + token_address, + '-', + 2 + ) seg2, UPPER( CASE WHEN len(TRIM(token_address)) = 56 THEN token_address - ELSE SPLIT_PART( - token_address, - '-', - 2 - ) + WHEN token_address ILIKE '%-%' + AND len(seg1) > len(seg2) THEN seg1 + WHEN token_address ILIKE '%-%' + AND len(seg2) > len(seg1) THEN seg2 END ) AS asset_issuer, UPPER( CASE - WHEN token_address LIKE '%-%' THEN SPLIT_PART( - token_address, - '-', - 1 - ) + WHEN token_address ILIKE '%-%' + AND len(seg1) > len(seg2) THEN seg2 + WHEN token_address ILIKE '%-%' + AND len(seg2) > len(seg1) THEN seg1 ELSE symbol END ) AS asset_code,