mirror of
https://github.com/FlipsideCrypto/solana-models.git
synced 2026-02-06 11:27:00 +00:00
Jupiter inner swaps (#588)
* reorganize swaps models folder structure * wip jupv6 inner swaps * wip * wip * update logic * refactored * remove comments * docs and tests * cleanup and add metadata cols * pick the larger of the 2 dates so that it gets picked up downstream * fix bad swap index in test seed * adjust swap index to relate to each top level jupiter instruction * add test cases * put tags last * remove _inserted_timestamp greatest, causing unexpected incremental behavior * handle multiple top level swaps inner instructions each using >1 route * remove incremental upper bound * add test case
This commit is contained in:
parent
2b4f8e1ef2
commit
79b061e755
21
data/testing__swaps_inner_intermediate_jupiterv6.csv
Normal file
21
data/testing__swaps_inner_intermediate_jupiterv6.csv
Normal file
@ -0,0 +1,21 @@
|
||||
tx_id,index,inner_index,swap_index,swapper,from_mint,from_amount,to_mint,to_amount,swap_program_id
|
||||
4UkpYVPGr5uQnr1Zb7AuUrryF8qFYJvHJqGBVkjgQkJEbxTuR4tgx8NG7t329TbHkSUSUnj7E13c18ZQ6XbDf34T,6,4,0,yssJP6Te8Qu5SUUfYCNXzbxoE9tDyvN6bDHf7KuE8QZ,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,2.0,So11111111111111111111111111111111111111112,0.012991046,LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo
|
||||
4UkpYVPGr5uQnr1Zb7AuUrryF8qFYJvHJqGBVkjgQkJEbxTuR4tgx8NG7t329TbHkSUSUnj7E13c18ZQ6XbDf34T,6,8,1,yssJP6Te8Qu5SUUfYCNXzbxoE9tDyvN6bDHf7KuE8QZ,So11111111111111111111111111111111111111112,0.012991046,Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB,2.001428,whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc
|
||||
4UkpYVPGr5uQnr1Zb7AuUrryF8qFYJvHJqGBVkjgQkJEbxTuR4tgx8NG7t329TbHkSUSUnj7E13c18ZQ6XbDf34T,6,13,2,yssJP6Te8Qu5SUUfYCNXzbxoE9tDyvN6bDHf7KuE8QZ,Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB,2.001428,So11111111111111111111111111111111111111112,0.013004972,2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c
|
||||
4UkpYVPGr5uQnr1Zb7AuUrryF8qFYJvHJqGBVkjgQkJEbxTuR4tgx8NG7t329TbHkSUSUnj7E13c18ZQ6XbDf34T,6,18,3,yssJP6Te8Qu5SUUfYCNXzbxoE9tDyvN6bDHf7KuE8QZ,So11111111111111111111111111111111111111112,0.013004972,SHDWyBxihqiCj6YekG2GUr7wqKLeLAMK1gHZck9pL6y,4.468413717,9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP
|
||||
4UkpYVPGr5uQnr1Zb7AuUrryF8qFYJvHJqGBVkjgQkJEbxTuR4tgx8NG7t329TbHkSUSUnj7E13c18ZQ6XbDf34T,6,22,4,yssJP6Te8Qu5SUUfYCNXzbxoE9tDyvN6bDHf7KuE8QZ,SHDWyBxihqiCj6YekG2GUr7wqKLeLAMK1gHZck9pL6y,4.468413717,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,2.003102,675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8
|
||||
Cn7LBvp6iRdg3SMPbRsZx88kVzhDsRXt6EXxpqhH8DpwziLBbDuKh9Ay8cpiHiSRoXX7bVj5ueYtAU4wtWeGmFa,2,3,0,ARFysWfdq2s8LC1nWm39HaPtYJXNbT6138T8sJYAJqpM,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,1.42,So11111111111111111111111111111111111111112,0.007959974,H8W3ctz92svYg6mkn1UtGfu2aQr2fnUFHM1RhScEtQDt
|
||||
Cn7LBvp6iRdg3SMPbRsZx88kVzhDsRXt6EXxpqhH8DpwziLBbDuKh9Ay8cpiHiSRoXX7bVj5ueYtAU4wtWeGmFa,2,8,1,ARFysWfdq2s8LC1nWm39HaPtYJXNbT6138T8sJYAJqpM,So11111111111111111111111111111111111111112,0.007959974,9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i,61.727513,9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP
|
||||
Cn7LBvp6iRdg3SMPbRsZx88kVzhDsRXt6EXxpqhH8DpwziLBbDuKh9Ay8cpiHiSRoXX7bVj5ueYtAU4wtWeGmFa,2,12,2,ARFysWfdq2s8LC1nWm39HaPtYJXNbT6138T8sJYAJqpM,9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i,61.727513,UST8SCn7jrqsq51odVLqcmvnC658HkqrKrPL3w2hHQ7,61.727513,DecZY86MU5Gj7kppfUCEmd4LbXXuyZH1yHaP2NTqdiZB
|
||||
Cn7LBvp6iRdg3SMPbRsZx88kVzhDsRXt6EXxpqhH8DpwziLBbDuKh9Ay8cpiHiSRoXX7bVj5ueYtAU4wtWeGmFa,2,16,3,ARFysWfdq2s8LC1nWm39HaPtYJXNbT6138T8sJYAJqpM,UST8SCn7jrqsq51odVLqcmvnC658HkqrKrPL3w2hHQ7,61.727513,9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i,61.727513,DecZY86MU5Gj7kppfUCEmd4LbXXuyZH1yHaP2NTqdiZB
|
||||
Cn7LBvp6iRdg3SMPbRsZx88kVzhDsRXt6EXxpqhH8DpwziLBbDuKh9Ay8cpiHiSRoXX7bVj5ueYtAU4wtWeGmFa,2,21,4,ARFysWfdq2s8LC1nWm39HaPtYJXNbT6138T8sJYAJqpM,9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i,61.727513,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,1.407539,SSwpkEEcbUqx4vtoEByFjSkhKdCT862DNVb52nZg1UZ
|
||||
4ExHEmvVXiXgGCHVWrfD8cshnQA3GvV84dTGbSsoXBr9NZHAoEDMHKiT8jY44AreyAkorc34UyNamJjKWbPgQQv9,3,5,0,FKK1YBAoyfrg7RcVRhg8QAQ6SridwynMHn1VfsGSqJbo,4cwVHQtwiK7r9aAUsu4cetk1JtLWPymopWcpTSsihCdL,1.41174032,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,3.924970,C1onEW2kPetmHmwe74YC1ESx3LnFEpVau6g2pg4fHycr
|
||||
4ExHEmvVXiXgGCHVWrfD8cshnQA3GvV84dTGbSsoXBr9NZHAoEDMHKiT8jY44AreyAkorc34UyNamJjKWbPgQQv9,3,10,1,FKK1YBAoyfrg7RcVRhg8QAQ6SridwynMHn1VfsGSqJbo,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,3.924970,So11111111111111111111111111111111111111112,0.028191302,2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c
|
||||
4ExHEmvVXiXgGCHVWrfD8cshnQA3GvV84dTGbSsoXBr9NZHAoEDMHKiT8jY44AreyAkorc34UyNamJjKWbPgQQv9,3,14,2,FKK1YBAoyfrg7RcVRhg8QAQ6SridwynMHn1VfsGSqJbo,So11111111111111111111111111111111111111112,0.028191302,26KMQVgDUoB6rEfnJ51yAABWWJND8uMtpnQgsHQ64Udr,540.215186,675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8
|
||||
5UMtTnzJRZDnKYjM1nnVzU46gnys98EZySiUUkWEaWj2G82D7EhzxQHdPJ6nYDDd5T9dB7KanGQHKwWdXN5KXjGh,6,11,0,DpbCAnke1ubJrvT6meuqijD7FbhBVpYzqMatAAEBrTRy,So11111111111111111111111111111111111111112,9.780663556,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,1628.350049,LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo
|
||||
5bnJuU5wkckz82WZLDPcA9v6uFwX1QJg7t9pL56cRbLc9VPNYaNKTo2ddRB1AECkSEmoHBYQsjtSLr7dguSGscUc,1,4,0,BLBYiq48WcLQ5SxiftyKmPtmsZPUBEnDEjqEnKGAR4zx,7GCihgDB8fe6KNjn2MYtkzZcRjQy3t9GHdC8uHYmW2hr,2.142586566,So11111111111111111111111111111111111111112,0.005840258,675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8
|
||||
5bnJuU5wkckz82WZLDPcA9v6uFwX1QJg7t9pL56cRbLc9VPNYaNKTo2ddRB1AECkSEmoHBYQsjtSLr7dguSGscUc,1,9,0,BLBYiq48WcLQ5SxiftyKmPtmsZPUBEnDEjqEnKGAR4zx,So11111111111111111111111111111111111111112,0.005840258,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,0.963540,CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK
|
||||
3ho3m3EYmWy5T3GPvL83HQw2ntezXYXYiwqhJyV6izFGPUEkRMgtzT9Hp67ftvaXxCpbZH2W4LWTDR55G7DMEAcF,0,4,0,BeePr3RWQL188BfCtzrqngPzYHrJQjNsN4fb2cDP2ivy,So11111111111111111111111111111111111111112,1,EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm,49.119676,LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo
|
||||
3ho3m3EYmWy5T3GPvL83HQw2ntezXYXYiwqhJyV6izFGPUEkRMgtzT9Hp67ftvaXxCpbZH2W4LWTDR55G7DMEAcF,1,4,0,BeePr3RWQL188BfCtzrqngPzYHrJQjNsN4fb2cDP2ivy,EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm,49.119676,So11111111111111111111111111111111111111112,1.000153095,2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c
|
||||
32q7kcFadu2gzNSaTviBpdSfa9GHEuHb9JC8morJqUKGPtVa7ndknTJ1VBwFWFZ2un9kaqd8WbQxBAJUBjG5t71X,0,5,0,BLBYiq48WcLQ5SxiftyKmPtmsZPUBEnDEjqEnKGAR4zx,So11111111111111111111111111111111111111112,0.444462749,7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj,0.384901668,MERLuDFBMmsHnsBPZw2sDQZHvXFMwp8EdjudcU2HKky
|
||||
32q7kcFadu2gzNSaTviBpdSfa9GHEuHb9JC8morJqUKGPtVa7ndknTJ1VBwFWFZ2un9kaqd8WbQxBAJUBjG5t71X,0,9,1,BLBYiq48WcLQ5SxiftyKmPtmsZPUBEnDEjqEnKGAR4zx,7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj,0.384901668,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,42.179012,whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc
|
||||
|
@ -0,0 +1,189 @@
|
||||
-- depends_on: {{ ref('silver__decoded_logs') }}
|
||||
|
||||
{{ config(
|
||||
materialized = 'incremental',
|
||||
unique_key = "swaps_inner_intermediate_jupiterv6_id",
|
||||
incremental_predicates = ["dynamic_range_predicate", "block_timestamp::date"],
|
||||
merge_exclude_columns = ["inserted_timestamp"],
|
||||
cluster_by = ['block_timestamp::DATE','modified_timestamp::DATE'],
|
||||
post_hook = enable_search_optimization(
|
||||
'{{this.schema}}',
|
||||
'{{this.identifier}}',
|
||||
'ON EQUALITY(tx_id, swapper, from_mint, to_mint)'
|
||||
),
|
||||
tags = ['scheduled_non_core'],
|
||||
) }}
|
||||
|
||||
{% if execute %}
|
||||
{% set base_query %}
|
||||
CREATE OR REPLACE TEMPORARY TABLE silver.swaps_inner_intermediate_jupiterv6__intermediate_tmp AS
|
||||
SELECT
|
||||
block_timestamp,
|
||||
block_id,
|
||||
tx_id,
|
||||
index,
|
||||
inner_index,
|
||||
succeeded,
|
||||
event_type,
|
||||
decoded_log:args:amm::string AS program_id,
|
||||
decoded_log:args:inputMint::string AS from_mint,
|
||||
decoded_log:args:inputAmount::string AS from_amount,
|
||||
decoded_log:args:outputMint::string AS to_mint,
|
||||
decoded_log:args:outputAmount::string AS to_amount,
|
||||
_inserted_timestamp,
|
||||
FROM
|
||||
{{ ref('silver__decoded_logs') }}
|
||||
WHERE
|
||||
program_id = 'JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4'
|
||||
AND event_type = 'SwapEvent'
|
||||
AND succeeded
|
||||
{% if is_incremental() %}
|
||||
AND _inserted_timestamp >= (
|
||||
SELECT
|
||||
MAX(_inserted_timestamp) - INTERVAL '1 hour'
|
||||
FROM
|
||||
{{ this }}
|
||||
)
|
||||
{% else %}
|
||||
AND _inserted_timestamp::date >= '2024-06-12'
|
||||
AND _inserted_timestamp::date < '2024-06-14'
|
||||
{% endif %}
|
||||
{% if is_incremental() %}
|
||||
UNION ALL
|
||||
SELECT
|
||||
l.block_timestamp,
|
||||
l.block_id,
|
||||
l.tx_id,
|
||||
l.index,
|
||||
l.inner_index,
|
||||
l.succeeded,
|
||||
l.event_type,
|
||||
l.decoded_log:args:amm::string AS program_id,
|
||||
l.decoded_log:args:inputMint::string AS from_mint,
|
||||
l.decoded_log:args:inputAmount::string AS from_amount,
|
||||
l.decoded_log:args:outputMint::string AS to_mint,
|
||||
l.decoded_log:args:outputAmount::string AS to_amount,
|
||||
l._inserted_timestamp,
|
||||
FROM
|
||||
{{ this }} s
|
||||
INNER JOIN
|
||||
{{ ref('silver__decoded_logs') }} l
|
||||
ON s.block_timestamp::date = l.block_timestamp::date
|
||||
AND s.tx_id = l.tx_id
|
||||
AND s.index = l.index
|
||||
AND coalesce(s.inner_index,-1) = coalesce(l.inner_index,-1)
|
||||
WHERE
|
||||
l.program_id = 'JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4'
|
||||
AND l.event_type = 'SwapEvent'
|
||||
AND l.succeeded
|
||||
AND s.swapper IS NULL
|
||||
AND s._inserted_timestamp >= current_date - 2 /* only look back 2 days */
|
||||
{% endif %}
|
||||
{% endset %}
|
||||
{% do run_query(base_query) %}
|
||||
{% set between_stmts = fsc_utils.dynamic_range_predicate("silver.swaps_inner_intermediate_jupiterv6__intermediate_tmp","block_timestamp::date") %}
|
||||
{% endif %}
|
||||
|
||||
WITH base AS (
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
silver.swaps_inner_intermediate_jupiterv6__intermediate_tmp
|
||||
QUALIFY
|
||||
row_number() OVER (PARTITION BY tx_id, index, coalesce(inner_index,-1) ORDER BY _inserted_timestamp DESC) = 1
|
||||
),
|
||||
swappers AS (
|
||||
SELECT
|
||||
tx_id,
|
||||
index,
|
||||
inner_index,
|
||||
silver.udf_get_account_pubkey_by_name('userTransferAuthority', decoded_instruction:accounts) AS swapper,
|
||||
lead(inner_index) OVER (PARTITION BY tx_id, index ORDER BY inner_index) AS next_summary_swap_index,
|
||||
_inserted_timestamp
|
||||
FROM
|
||||
{{ ref('silver__decoded_instructions_combined') }}
|
||||
WHERE
|
||||
{{ between_stmts }}
|
||||
AND program_id = 'JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4'
|
||||
AND event_type IN ('exactOutRoute','sharedAccountsExactOutRoute','sharedAccountsRoute','routeWithTokenLedger','route','sharedAccountsRouteWithTokenLedger')
|
||||
AND swapper IS NOT NULL
|
||||
QUALIFY
|
||||
row_number() OVER (PARTITION BY tx_id, index, coalesce(inner_index, -1) ORDER BY _inserted_timestamp DESC) = 1
|
||||
),
|
||||
distinct_mints AS (
|
||||
SELECT DISTINCT
|
||||
mint
|
||||
FROM (
|
||||
SELECT DISTINCT
|
||||
from_mint AS mint
|
||||
FROM
|
||||
base
|
||||
UNION ALL
|
||||
SELECT DISTINCT
|
||||
to_mint
|
||||
FROM
|
||||
base
|
||||
)
|
||||
),
|
||||
token_decimals AS (
|
||||
SELECT DISTINCT
|
||||
mint,
|
||||
decimal
|
||||
FROM
|
||||
{{ ref('silver__mint_actions') }}
|
||||
INNER JOIN
|
||||
distinct_mints
|
||||
USING(mint)
|
||||
WHERE
|
||||
succeeded
|
||||
AND decimal IS NOT NULL
|
||||
UNION ALL
|
||||
SELECT
|
||||
'So11111111111111111111111111111111111111112',
|
||||
9
|
||||
UNION ALL
|
||||
SELECT
|
||||
'GyD5AvrcZAhSP5rrhXXGPUHri6sbkRpq67xfG3x8ourT',
|
||||
9
|
||||
)
|
||||
SELECT
|
||||
b.block_timestamp,
|
||||
b.block_id,
|
||||
b.tx_id,
|
||||
b.index,
|
||||
b.inner_index,
|
||||
row_number() OVER (PARTITION BY b.tx_id, b.index, s.inner_index ORDER BY b.inner_index)-1 AS swap_index, /* we want the swap index as it relates to the top level swap instruction */
|
||||
b.succeeded,
|
||||
b.program_id AS swap_program_id,
|
||||
'JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4' AS aggregator_program_id,
|
||||
s.swapper,
|
||||
b.from_mint,
|
||||
b.from_amount * pow(10,-d.decimal) AS from_amount,
|
||||
b.to_mint,
|
||||
b.to_amount * pow(10,-d2.decimal) AS to_amount,
|
||||
b._inserted_timestamp,
|
||||
{{ dbt_utils.generate_surrogate_key(['b.tx_id','b.index','b.inner_index']) }} as swaps_inner_intermediate_jupiterv6_id,
|
||||
sysdate() as inserted_timestamp,
|
||||
sysdate() as modified_timestamp,
|
||||
'{{ invocation_id }}' AS _invocation_id
|
||||
FROM
|
||||
base b
|
||||
LEFT OUTER JOIN
|
||||
swappers s
|
||||
ON b.tx_id = s.tx_id
|
||||
AND b.index = s.index
|
||||
AND (
|
||||
s.inner_index IS NULL
|
||||
OR
|
||||
(
|
||||
b.inner_index > s.inner_index
|
||||
AND (b.inner_index < s.next_summary_swap_index
|
||||
OR s.next_summary_swap_index IS NULL)
|
||||
)
|
||||
)
|
||||
LEFT OUTER JOIN
|
||||
token_decimals d
|
||||
ON b.from_mint = d.mint
|
||||
LEFT OUTER JOIN
|
||||
token_decimals d2
|
||||
ON b.to_mint = d2.mint
|
||||
@ -0,0 +1,120 @@
|
||||
version: 2
|
||||
models:
|
||||
- name: silver__swaps_inner_intermediate_jupiterv6
|
||||
tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- TX_ID
|
||||
- INDEX
|
||||
- INNER_INDEX
|
||||
where: block_timestamp::date > current_date - 30
|
||||
- compare_model_subset:
|
||||
name: silver__swaps_inner_intermediate_jupiterv6_business_logic_test
|
||||
compare_model: ref('testing__swaps_inner_intermediate_jupiterv6')
|
||||
compare_columns:
|
||||
- tx_id
|
||||
- index
|
||||
- inner_index
|
||||
- swap_index
|
||||
- swapper
|
||||
- from_mint
|
||||
- round(from_amount,2)
|
||||
- to_mint
|
||||
- round(to_amount,2)
|
||||
- swap_program_id
|
||||
model_condition: "where tx_id in ('4UkpYVPGr5uQnr1Zb7AuUrryF8qFYJvHJqGBVkjgQkJEbxTuR4tgx8NG7t329TbHkSUSUnj7E13c18ZQ6XbDf34T',
|
||||
'Cn7LBvp6iRdg3SMPbRsZx88kVzhDsRXt6EXxpqhH8DpwziLBbDuKh9Ay8cpiHiSRoXX7bVj5ueYtAU4wtWeGmFa',
|
||||
'4ExHEmvVXiXgGCHVWrfD8cshnQA3GvV84dTGbSsoXBr9NZHAoEDMHKiT8jY44AreyAkorc34UyNamJjKWbPgQQv9',
|
||||
'5UMtTnzJRZDnKYjM1nnVzU46gnys98EZySiUUkWEaWj2G82D7EhzxQHdPJ6nYDDd5T9dB7KanGQHKwWdXN5KXjGh',
|
||||
'5bnJuU5wkckz82WZLDPcA9v6uFwX1QJg7t9pL56cRbLc9VPNYaNKTo2ddRB1AECkSEmoHBYQsjtSLr7dguSGscUc',
|
||||
'3ho3m3EYmWy5T3GPvL83HQw2ntezXYXYiwqhJyV6izFGPUEkRMgtzT9Hp67ftvaXxCpbZH2W4LWTDR55G7DMEAcF',
|
||||
'32q7kcFadu2gzNSaTviBpdSfa9GHEuHb9JC8morJqUKGPtVa7ndknTJ1VBwFWFZ2un9kaqd8WbQxBAJUBjG5t71X')"
|
||||
recent_date_filter: &recent_date_filter
|
||||
config:
|
||||
where: _inserted_timestamp >= current_date - 7
|
||||
columns:
|
||||
- name: BLOCK_TIMESTAMP
|
||||
description: "{{ doc('block_timestamp') }}"
|
||||
tests:
|
||||
- not_null: *recent_date_filter
|
||||
- dbt_expectations.expect_row_values_to_have_recent_data:
|
||||
datepart: day
|
||||
interval: 2
|
||||
- name: BLOCK_ID
|
||||
description: "{{ doc('block_id') }}"
|
||||
tests:
|
||||
- not_null: *recent_date_filter
|
||||
- name: TX_ID
|
||||
description: "{{ doc('tx_id') }}"
|
||||
tests:
|
||||
- not_null: *recent_date_filter
|
||||
- name: INDEX
|
||||
description: "{{ doc('event_index') }}"
|
||||
tests:
|
||||
- not_null: *recent_date_filter
|
||||
- name: INNER_INDEX
|
||||
description: "{{ doc('inner_index') }}. This is the inner index of the log event listing the inner swap"
|
||||
tests:
|
||||
- not_null: *recent_date_filter
|
||||
- name: SWAP_INDEX
|
||||
description: "{{ doc('swaps_swap_index') }} as it relates to the top level Jupiter V6 swap instruction"
|
||||
tests:
|
||||
- not_null: *recent_date_filter
|
||||
- name: SUCCEEDED
|
||||
description: "{{ doc('tx_succeeded') }}"
|
||||
tests:
|
||||
- not_null: *recent_date_filter
|
||||
- name: SWAP_PROGRAM_ID
|
||||
description: "{{ doc('program_id') }}. This is the AMM performing the swap."
|
||||
tests:
|
||||
- not_null: *recent_date_filter
|
||||
- name: AGGREGATOR_PROGRAM_ID
|
||||
description: "{{ doc('program_id') }}. This is the aggregator calling the different AMMs."
|
||||
tests:
|
||||
- not_null: *recent_date_filter
|
||||
- accepted_values:
|
||||
values: ['JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4']
|
||||
<<: *recent_date_filter
|
||||
- name: SWAPPER
|
||||
description: "{{ doc('swaps_swapper') }}"
|
||||
tests:
|
||||
- not_null:
|
||||
where: _inserted_timestamp between current_date - 7 and current_date - 2 # allow it to be null during lookback buffer
|
||||
- name: FROM_AMOUNT
|
||||
description: "{{ doc('swaps_from_amt') }}"
|
||||
tests:
|
||||
- not_null: *recent_date_filter
|
||||
- name: FROM_MINT
|
||||
description: "{{ doc('swaps_from_mint') }}"
|
||||
tests:
|
||||
- not_null: *recent_date_filter
|
||||
- name: TO_AMOUNT
|
||||
description: "{{ doc('swaps_to_amt') }}"
|
||||
tests:
|
||||
- not_null: *recent_date_filter
|
||||
- name: TO_MINT
|
||||
description: "{{ doc('swaps_to_mint') }}"
|
||||
tests:
|
||||
- not_null: *recent_date_filter
|
||||
- name: _INSERTED_TIMESTAMP
|
||||
description: "{{ doc('_inserted_timestamp') }}"
|
||||
tests:
|
||||
- not_null
|
||||
- name: SWAPS_INNER_INTERMEDIATE_JUPITERV6_ID
|
||||
description: '{{ doc("pk") }}'
|
||||
tests:
|
||||
- unique: *recent_date_filter
|
||||
- name: INSERTED_TIMESTAMP
|
||||
description: '{{ doc("inserted_timestamp") }}'
|
||||
tests:
|
||||
- not_null: *recent_date_filter
|
||||
- name: MODIFIED_TIMESTAMP
|
||||
description: '{{ doc("modified_timestamp") }}'
|
||||
tests:
|
||||
- not_null: *recent_date_filter
|
||||
- name: _INVOCATION_ID
|
||||
description: '{{ doc("_invocation_id") }}'
|
||||
tests:
|
||||
- not_null:
|
||||
name: test_silver__not_null_swaps_inner_intermediate_jupiterv6__invocation_id
|
||||
<<: *recent_date_filter
|
||||
Loading…
Reference in New Issue
Block a user