diff --git a/models/gold/defi/defi__fact_swaps.sql b/models/gold/defi/defi__fact_swaps.sql index e799b2fc..e3f0ab28 100644 --- a/models/gold/defi/defi__fact_swaps.sql +++ b/models/gold/defi/defi__fact_swaps.sql @@ -37,6 +37,7 @@ FROM LEFT OUTER JOIN {{ ref('core__dim_labels') }} l ON s.program_id = l.address +/* TODO: DEPRECATE - remove jupiter swaps from this table, we will only cover individual dexes moving forward. Aggregator(s) get their own model(s) */ UNION ALL SELECT block_timestamp, @@ -50,16 +51,43 @@ SELECT to_mint AS swap_to_mint, program_id, l.address_name AS swap_program, - concat_ws('-',tx_id,swap_index) as _log_id, + concat_ws('-',tx_id,swap_index,swap_program) as _log_id, swaps_intermediate_jupiterv6_id as fact_swaps_id, s.inserted_timestamp, s.modified_timestamp FROM - {{ ref('silver__swaps_intermediate_jupiterv6') }} + {{ ref('silver__swaps_intermediate_jupiterv6_view') }} s LEFT OUTER JOIN {{ ref('core__dim_labels') }} l ON s.program_id = l.address +WHERE + block_timestamp::date < '2023-08-03' +UNION ALL +SELECT + block_timestamp, + block_id, + tx_id, + succeeded, + swapper, + from_amount AS swap_from_amount, + from_mint AS swap_from_mint, + to_amount AS swap_to_amount, + to_mint AS swap_to_mint, + program_id, + l.address_name AS swap_program, + concat_ws('-',tx_id,swap_index,swap_program) as _log_id, + swaps_intermediate_jupiterv6_id as fact_swaps_id, + s.inserted_timestamp, + s.modified_timestamp +FROM + {{ ref('silver__swaps_intermediate_jupiterv6_2') }} + s + LEFT OUTER JOIN {{ ref('core__dim_labels') }} + l + ON s.program_id = l.address +WHERE + block_timestamp::date >= '2023-08-03' UNION ALL SELECT block_timestamp, diff --git a/models/gold/defi/defi__fact_swaps.yml b/models/gold/defi/defi__fact_swaps.yml index d3d7b4a1..b3f5be5d 100644 --- a/models/gold/defi/defi__fact_swaps.yml +++ b/models/gold/defi/defi__fact_swaps.yml @@ -4,7 +4,7 @@ models: description: This table contains swaps performed on Jupiter, Orca, Raydium, Saber, Bonkswap, Dooar, Phoenix and Meteora swap programs. Intermediate swaps are aggregated over the DEX programs, so the values showcase the final mint/amount swap values. Ie. a swap on Jupiter that swaps SOL->USDC->mSOL->ETH would show the initial amount in and the final amount out of SOL->ETH. For Phoenix, we are not capturing swaps where there are separate transactions for placing the order and filling the order. recent_date_filter: &recent_date_filter config: - where: inserted_timestamp >= current_date - 7 + where: block_timestamp >= current_date - 7 columns: - name: BLOCK_TIMESTAMP description: "{{ doc('block_timestamp') }}" diff --git a/models/gold/defi/defi__fact_swaps_jupiter_inner.sql b/models/gold/defi/defi__fact_swaps_jupiter_inner.sql new file mode 100644 index 00000000..3cb327d0 --- /dev/null +++ b/models/gold/defi/defi__fact_swaps_jupiter_inner.sql @@ -0,0 +1,26 @@ +{{ config( + materialized = 'view', + meta ={ 'database_tags':{ 'table':{ 'PURPOSE': 'SWAPS' }}}, + tags = ['scheduled_non_core'] +) }} + +SELECT + block_timestamp, + block_id, + tx_id, + index, + inner_index, + swap_index, + succeeded, + swapper, + from_mint AS swap_from_mint, + from_amount AS swap_from_amount, + to_mint AS swap_to_mint, + to_amount AS swap_to_amount, + swap_program_id, + aggregator_program_id, + swaps_inner_intermediate_jupiterv6_id AS fact_swaps_jupiter_inner_id, + inserted_timestamp, + modified_timestamp, +FROM + {{ ref('silver__swaps_inner_intermediate_jupiterv6') }} \ No newline at end of file diff --git a/models/gold/defi/defi__fact_swaps_jupiter_inner.yml b/models/gold/defi/defi__fact_swaps_jupiter_inner.yml new file mode 100644 index 00000000..30438a46 --- /dev/null +++ b/models/gold/defi/defi__fact_swaps_jupiter_inner.yml @@ -0,0 +1,70 @@ +version: 2 +models: + - name: defi__fact_swaps_jupiter_inner + columns: + - name: BLOCK_TIMESTAMP + description: "{{ doc('block_timestamp') }}" + tests: + - dbt_expectations.expect_column_to_exist + - name: BLOCK_ID + description: "{{ doc('block_id') }}" + tests: + - dbt_expectations.expect_column_to_exist + - name: TX_ID + description: "{{ doc('tx_id') }}" + tests: + - dbt_expectations.expect_column_to_exist + - name: INDEX + description: "{{ doc('event_index') }}" + tests: + - dbt_expectations.expect_column_to_exist + - name: INNER_INDEX + description: "{{ doc('inner_index') }}. This is the inner index of the log event listing the inner swap" + tests: + - dbt_expectations.expect_column_to_exist + - name: SWAP_INDEX + description: "{{ doc('swaps_swap_index') }} as it relates to the top level Jupiter V6 swap instruction" + tests: + - dbt_expectations.expect_column_to_exist + - name: SUCCEEDED + description: "{{ doc('tx_succeeded') }}" + tests: + - dbt_expectations.expect_column_to_exist + - name: SWAP_PROGRAM_ID + description: "{{ doc('program_id') }}. This is the AMM performing the swap." + tests: + - dbt_expectations.expect_column_to_exist + - name: AGGREGATOR_PROGRAM_ID + description: "{{ doc('program_id') }}. This is the aggregator calling the different AMMs." + tests: + - dbt_expectations.expect_column_to_exist + - name: SWAPPER + description: "{{ doc('swaps_swapper') }}" + tests: + - dbt_expectations.expect_column_to_exist + - name: SWAP_FROM_AMOUNT + description: "{{ doc('swaps_from_amt') }}" + tests: + - dbt_expectations.expect_column_to_exist + - name: SWAP_FROM_MINT + description: "{{ doc('swaps_from_mint') }}" + tests: + - dbt_expectations.expect_column_to_exist + - name: SWAP_TO_AMOUNT + description: "{{ doc('swaps_to_amt') }}" + tests: + - dbt_expectations.expect_column_to_exist + - name: SWAP_TO_MINT + description: "{{ doc('swaps_to_mint') }}" + tests: + - dbt_expectations.expect_column_to_exist + - name: FACT_SWAPS_JUPITER_INNER_ID + tests: + - dbt_expectations.expect_column_to_exist + - name: INSERTED_TIMESTAMP + tests: + - dbt_expectations.expect_column_to_exist + - name: MODIFIED_TIMESTAMP + description: '{{ doc("modified_timestamp") }}' + tests: + - dbt_expectations.expect_column_to_exist diff --git a/models/gold/defi/defi__fact_swaps_jupiter_summary.sql b/models/gold/defi/defi__fact_swaps_jupiter_summary.sql new file mode 100644 index 00000000..fc0e2eb5 --- /dev/null +++ b/models/gold/defi/defi__fact_swaps_jupiter_summary.sql @@ -0,0 +1,49 @@ +{{ config( + materialized = 'view', + meta ={ 'database_tags':{ 'table':{ 'PURPOSE': 'SWAPS' }}}, + tags = ['scheduled_non_core'] +) }} + +SELECT + block_timestamp, + block_id, + tx_id, + swap_index AS index, + NULL AS inner_index, + swap_index, + succeeded, + swapper, + from_mint AS swap_from_mint, + from_amt AS swap_from_amount, + to_mint AS swap_to_mint, + to_amt AS swap_to_amount, + program_id, + swaps_intermediate_jupiterv6_id AS fact_swaps_jupiter_summary_id, + inserted_timestamp, + modified_timestamp, +FROM + {{ ref('silver__swaps_intermediate_jupiterv6_view') }} +WHERE + block_timestamp::date < '2023-08-03' +UNION ALL +SELECT + block_timestamp, + block_id, + tx_id, + index, + inner_index, + swap_index, + succeeded, + swapper, + from_mint AS swap_from_mint, + from_amount AS swap_from_amount, + to_mint AS swap_to_mint, + to_amount AS swap_to_amount, + program_id, + swaps_intermediate_jupiterv6_id AS fact_swaps_jupiter_summary_id, + inserted_timestamp, + modified_timestamp, +FROM + {{ ref('silver__swaps_intermediate_jupiterv6_2') }} +WHERE + block_timestamp::date >= '2023-08-03' \ No newline at end of file diff --git a/models/gold/defi/defi__fact_swaps_jupiter_summary.yml b/models/gold/defi/defi__fact_swaps_jupiter_summary.yml new file mode 100644 index 00000000..bfe8679f --- /dev/null +++ b/models/gold/defi/defi__fact_swaps_jupiter_summary.yml @@ -0,0 +1,66 @@ +version: 2 +models: + - name: defi__fact_swaps_jupiter_summary + columns: + - name: BLOCK_TIMESTAMP + description: "{{ doc('block_timestamp') }}" + tests: + - dbt_expectations.expect_column_to_exist + - name: BLOCK_ID + description: "{{ doc('block_id') }}" + tests: + - dbt_expectations.expect_column_to_exist + - name: TX_ID + description: "{{ doc('tx_id') }}" + tests: + - dbt_expectations.expect_column_to_exist + - name: INDEX + description: "{{ doc('event_index') }}" + tests: + - dbt_expectations.expect_column_to_exist + - name: INNER_INDEX + description: "{{ doc('inner_index') }}. This is the inner index of the log event listing the inner swap" + tests: + - dbt_expectations.expect_column_to_exist + - name: SWAP_INDEX + description: "{{ doc('swaps_swap_index') }} as it relates to the top level Jupiter V6 swap instruction" + tests: + - dbt_expectations.expect_column_to_exist + - name: SUCCEEDED + description: "{{ doc('tx_succeeded') }}" + tests: + - dbt_expectations.expect_column_to_exist + - name: PROGRAM_ID + description: "{{ doc('program_id') }}" + tests: + - dbt_expectations.expect_column_to_exist + - name: SWAPPER + description: "{{ doc('swaps_swapper') }}" + tests: + - dbt_expectations.expect_column_to_exist + - name: SWAP_FROM_AMOUNT + description: "{{ doc('swaps_from_amt') }}" + tests: + - dbt_expectations.expect_column_to_exist + - name: SWAP_FROM_MINT + description: "{{ doc('swaps_from_mint') }}" + tests: + - dbt_expectations.expect_column_to_exist + - name: SWAP_TO_AMOUNT + description: "{{ doc('swaps_to_amt') }}" + tests: + - dbt_expectations.expect_column_to_exist + - name: SWAP_TO_MINT + description: "{{ doc('swaps_to_mint') }}" + tests: + - dbt_expectations.expect_column_to_exist + - name: FACT_SWAPS_JUPITER_SUMMARY_ID + tests: + - dbt_expectations.expect_column_to_exist + - name: INSERTED_TIMESTAMP + tests: + - dbt_expectations.expect_column_to_exist + - name: MODIFIED_TIMESTAMP + description: '{{ doc("modified_timestamp") }}' + tests: + - dbt_expectations.expect_column_to_exist diff --git a/models/silver/swaps/jupiter/v6/silver__swaps_intermediate_jupiterv6.sql b/models/silver/swaps/jupiter/v6/silver__swaps_intermediate_jupiterv6.sql index ea12bc28..da79b0b0 100644 --- a/models/silver/swaps/jupiter/v6/silver__swaps_intermediate_jupiterv6.sql +++ b/models/silver/swaps/jupiter/v6/silver__swaps_intermediate_jupiterv6.sql @@ -12,6 +12,7 @@ '{{this.identifier}}', 'ON EQUALITY(tx_id, swapper, from_mint, to_mint)' ), + enabled=false, ) }} {% if execute %} diff --git a/models/silver/swaps/jupiter/v6/silver__swaps_intermediate_jupiterv6_view.sql b/models/silver/swaps/jupiter/v6/silver__swaps_intermediate_jupiterv6_view.sql new file mode 100644 index 00000000..84ed33ba --- /dev/null +++ b/models/silver/swaps/jupiter/v6/silver__swaps_intermediate_jupiterv6_view.sql @@ -0,0 +1,23 @@ +{{ config( + materialized = 'view' +) }} + +SELECT + block_id, + block_timestamp, + tx_id, + swap_index, + program_id, + succeeded, + swapper, + from_amt, + from_mint, + to_amt, + to_mint, + _inserted_timestamp, + swaps_intermediate_jupiterv6_id, + inserted_timestamp, + modified_timestamp, + invocation_id +FROM + {{ source('solana_silver', 'swaps_intermediate_jupiterv6') }} diff --git a/models/sources.yml b/models/sources.yml index 5c915484..54d5d177 100644 --- a/models/sources.yml +++ b/models/sources.yml @@ -88,6 +88,7 @@ sources: - name: stake_pool_actions_socean - name: _blocks_tx_count - name: nft_sales_solsniper_v1_events + - name: swaps_intermediate_jupiterv6 - name: solana_streamline database: solana schema: streamline