diff --git a/dbt_subprojects/tokens/macros/balances/balances_latest.sql b/dbt_subprojects/tokens/macros/balances/balances_latest.sql new file mode 100644 index 00000000000..29431ebce6a --- /dev/null +++ b/dbt_subprojects/tokens/macros/balances/balances_latest.sql @@ -0,0 +1,31 @@ +{%- macro balances_latest(balances) %} + +select + {{dbt_utils.generate_surrogate_key(['address', 'token_address', 'token_standard', "token_id"])}} as unique_key, + blockchain, + address, + token_address, + token_standard, + token_symbol, + token_id, + collection_name, + max(block_number) as block_number_latest, + max(date_trunc('day', block_time)) as block_date_latest, + max(block_time) as block_time_latest, + max_by(balance_raw, block_number) as balance_raw_latest, + max_by(balance, block_number) as balance_latest +from {{balances}} +where + 1 = 1 + {% if is_incremental() %} + and {{ incremental_predicate('block_time') }} + {% endif %} +group by + blockchain, + address, + token_address, + token_standard, + token_symbol, + token_id, + collection_name +{% endmacro %} \ No newline at end of file diff --git a/dbt_subprojects/tokens/models/transfers_and_balances/ethereum/_schema.yml b/dbt_subprojects/tokens/models/transfers_and_balances/ethereum/_schema.yml index a59e171c2ce..bec661d6c7e 100644 --- a/dbt_subprojects/tokens/models/transfers_and_balances/ethereum/_schema.yml +++ b/dbt_subprojects/tokens/models/transfers_and_balances/ethereum/_schema.yml @@ -190,3 +190,31 @@ models: - name: symbol - name: decimals - name: collection_name + + - name: tokens_ethereum_balances_latest + meta: + blockchain: ethereum + sector: tokens + contributors: et-dynamic + config: + tags: ['tokens','balances', 'ethereum'] + description: "Most recent token balances enriched" + data_tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: + - unique_key + - block_date_latest + columns: + - name: unique_key + - name: blockchain + - name: address + - name: token_address + - name: token_standard + - name: token_symbol + - name: token_id + - name: collection_name + - name: block_number_latest + - name: block_date_latest + - name: block_time_latest + - name: balance_raw_latest + - name: balance_latest diff --git a/dbt_subprojects/tokens/models/transfers_and_balances/ethereum/tokens_ethereum_balances_latest.sql b/dbt_subprojects/tokens/models/transfers_and_balances/ethereum/tokens_ethereum_balances_latest.sql new file mode 100644 index 00000000000..91d71e2bc4f --- /dev/null +++ b/dbt_subprojects/tokens/models/transfers_and_balances/ethereum/tokens_ethereum_balances_latest.sql @@ -0,0 +1,20 @@ +{{config( + schema = 'tokens_ethereum', + alias = 'balances_latest', + materialized = 'incremental', + file_format = 'delta', + incremental_strategy = 'merge', + unique_key = ['unique_key', 'block_date_latest'], + partition_by = ['block_date_latest'], + post_hook='{{ expose_spells(\'["ethereum"]\', + "sector", + "balances_latest", + \'["et-dynamic"]\') }}' +) +}} + +{{ + balances_latest( + balances = ref('tokens_ethereum_balances'), + ) +}}