AN-4820/heal-logic (#237)

* vars

* tx success

* bridge heal

* lps heal

* var format

* heal logic

* dex swaps heal

* column names

* round in gold
This commit is contained in:
drethereum 2024-05-30 10:13:28 -06:00 committed by GitHub
parent 0183969e70
commit 67a18edacc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
80 changed files with 3319 additions and 2404 deletions

View File

@ -34,36 +34,43 @@ arbitrum:
client_session_keep_alive: False
query_tag: <TAG>
```
### Variables
## Variables
To control the creation of UDF or SP macros with dbt run:
* UPDATE_UDFS_AND_SPS
When True, executes all macros included in the on-run-start hooks within dbt_project.yml on model run as normal
When False, none of the on-run-start macros are executed on model run
* Default values are False
* When True, executes all macros included in the on-run-start hooks within dbt_project.yml on model run as normal
* When False, none of the on-run-start macros are executed on model run
Default values are False
* Usage: `dbt run --vars '{"UPDATE_UDFS_AND_SPS":True}' -m ...`
* Usage:
dbt run --var '{"UPDATE_UDFS_AND_SPS":True}' -m ...
Use a variable to heal a model incrementally:
* HEAL_MODEL
* Default is FALSE (Boolean)
* When FALSE, logic will be negated
* When TRUE, heal logic will apply
* Include `heal` in model tags within the config block for inclusion in the `dbt_run_heal_models` workflow, e.g. `tags = 'heal'`
To reload records in a curated complete table without a full-refresh, such as `silver_bridge.complete_bridge_activity`:
* HEAL_CURATED_MODEL
Default is an empty array []
When item is included in var array [], incremental logic will be skipped for that CTE / code block
When item is not included in var array [] or does not match specified item in model, incremental logic will apply
Example set up: `{% if is_incremental() and 'axelar' not in var('HEAL_CURATED_MODEL') %}`
* Usage: `dbt run --vars '{"HEAL_MODEL":True}' -m ...`
* Usage:
Single CTE: dbt run --var '{"HEAL_CURATED_MODEL":"axelar"}' -m ...
Multiple CTEs: dbt run --var '{"HEAL_CURATED_MODEL":["axelar","across","celer_cbridge"]}' -m ...
Use a variable to negate incremental logic:
* Example use case: reload records in a curated complete table without a full-refresh, such as `silver_bridge.complete_bridge_activity`:
* HEAL_MODELS
* Default is an empty array []
* When item is included in var array [], incremental logic will be skipped for that CTE / code block
* When item is not included in var array [] or does not match specified item in model, incremental logic will apply
* Example set up: `{% if is_incremental() and 'axelar' not in var('HEAL_MODELS') %}`
### Resources:
- Learn more about dbt [in the docs](https://docs.getdbt.com/docs/introduction)
- Check out [Discourse](https://discourse.getdbt.com/) for commonly asked questions and answers
- Join the [chat](https://community.getdbt.com/) on Slack for live discussions and support
- Find [dbt events](https://events.getdbt.com) near you
- Check out [the blog](https://blog.getdbt.com/) for the latest news on dbt's development and best practices
* Usage:
* Single CTE: `dbt run --vars '{"HEAL_MODELS":"axelar"}' -m ...`
* Multiple CTEs: `dbt run --vars '{"HEAL_MODELS":["axelar","across","celer_cbridge"]}' -m ...`
Use a variable to extend the incremental lookback period:
* LOOKBACK
* Default is a string representing the specified time interval e.g. '12 hours', '7 days' etc.
* Example set up: `SELECT MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'`
* Usage: `dbt run --vars '{"LOOKBACK":"36 hours"}' -m ...`
## Applying Model Tags
@ -97,7 +104,7 @@ To add/update a model's snowflake tags, add/modify the `meta` model property und
By default, model tags are pushed to Snowflake on each load. You can disable this by setting the `UPDATE_SNOWFLAKE_TAGS` project variable to `False` during a run.
```
dbt run --var '{"UPDATE_SNOWFLAKE_TAGS":False}' -s models/core/core__fact_blocks.sql
dbt run --vars '{"UPDATE_SNOWFLAKE_TAGS":False}' -s models/core/core__fact_blocks.sql
```
### Querying for existing tags on a model in snowflake
@ -106,3 +113,10 @@ dbt run --var '{"UPDATE_SNOWFLAKE_TAGS":False}' -s models/core/core__fact_blocks
select *
from table(arbitrum.information_schema.tag_references('arbitrum.core.fact_blocks', 'table'));
```
### Resources:
- Learn more about dbt [in the docs](https://docs.getdbt.com/docs/introduction)
- Check out [Discourse](https://discourse.getdbt.com/) for commonly asked questions and answers
- Join the [chat](https://community.getdbt.com/) on Slack for live discussions and support
- Find [dbt events](https://events.getdbt.com) near you
- Check out [the blog](https://blog.getdbt.com/) for the latest news on dbt's development and best practices

View File

@ -65,7 +65,7 @@ vars:
WAIT: 0
OBSERV_FULL_TEST: False
HEAL_MODEL: False
HEAL_CURATED_MODEL: []
HEAL_MODELS: []
START_GHA_TASKS: False
API_INTEGRATION: '{{ var("config")[target.name]["API_INTEGRATION"] if var("config")[target.name] else var("config")["dev"]["API_INTEGRATION"] }}'
EXTERNAL_FUNCTION_URI: '{{ var("config")[target.name]["EXTERNAL_FUNCTION_URI"] if var("config")[target.name] else var("config")["dev"]["EXTERNAL_FUNCTION_URI"] }}'

View File

@ -33,7 +33,13 @@ SELECT
token_symbol,
amount_unadj,
amount,
amount_usd,
ROUND(
CASE
WHEN amount_usd < 1e+15 THEN amount_usd
ELSE NULL
END,
2
) AS amount_usd,
COALESCE (
complete_bridge_activity_id,
{{ dbt_utils.generate_surrogate_key(

View File

@ -24,10 +24,26 @@ SELECT
event_name,
amount_in_unadj,
amount_in,
amount_in_usd,
ROUND(
CASE
WHEN amount_out_usd IS NULL
OR ABS((amount_in_usd - amount_out_usd) / NULLIF(amount_out_usd, 0)) > 0.75
OR ABS((amount_in_usd - amount_out_usd) / NULLIF(amount_in_usd, 0)) > 0.75 THEN NULL
ELSE amount_in_usd
END,
2
) AS amount_in_usd,
amount_out_unadj,
amount_out,
amount_out_usd,
ROUND(
CASE
WHEN amount_in_usd IS NULL
OR ABS((amount_out_usd - amount_in_usd) / NULLIF(amount_in_usd, 0)) > 0.75
OR ABS((amount_out_usd - amount_in_usd) / NULLIF(amount_out_usd, 0)) > 0.75 THEN NULL
ELSE amount_out_usd
END,
2
) AS amount_out_usd,
sender,
tx_to,
event_index,

View File

@ -35,7 +35,7 @@ AND _inserted_timestamp >= (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '36 hours'
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
@ -169,7 +169,7 @@ heal_model AS (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '36 hours'
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
@ -195,7 +195,7 @@ heal_model AS (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '36 hours'
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)

View File

@ -52,6 +52,7 @@ WITH base_evt AS (
WHERE
topics [0] :: STRING = '0xafc4df6845a4ab948b492800d3d8a25d538a102a2bc07cd01f1cfa097fddcff6'
AND contract_address = '0xe35e9842fceaca96570b734083f4a58e8f7c5f2a'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -60,6 +60,7 @@ WITH base_evt AS (
WHERE
topics [0] :: STRING = '0xa123dc29aebf7d0c3322c8eeb5b999e859f39937950ed31056532713d0de396f'
AND contract_address = '0xe35e9842fceaca96570b734083f4a58e8f7c5f2a'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -42,6 +42,7 @@ WITH base_evt AS (
WHERE
topics [0] :: STRING = '0x7e50569d26be643bda7757722291ec66b1be66d8283474ae3fab5a98f878a7a2'
AND contract_address = '0xe432150cce91c13a887f7d836923d5597add8e31'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (
@ -89,6 +90,7 @@ native_gas_paid AS (
WHERE
topics [0] :: STRING = '0x999d431b58761213cf53af96262b67a069cbd963499fd8effd1e21556217b841'
AND contract_address = '0x2d5d7d31f671f86c782533cc367f14109a082712'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -49,6 +49,7 @@ WITH base_evt AS (
'0xdd90e5e87a2081dcf0391920868ebc2ffb81a1af',
'0x1619de6b6b20ed217a58d00f37b9d47c7663feca'
)
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -70,6 +70,7 @@ WITH base_evt AS (
WHERE
topics [0] :: STRING = '0xfc8703fd57380f9dd234a89dce51333782d49c5902f307b02f03e014d18fe471' --CreatedOrder
AND contract_address = '0xef4fb24ad0916217251f553c0596f8edc630eb66' --Dln: Source
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -40,6 +40,7 @@ WITH base_evt AS (
--PortalV2
'0xbf0b5d561b986809924f88099c4ff0e6bcce60c9' --PortalV2
)
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -14,6 +14,7 @@ WITH base_contracts AS (
{{ ref('silver__logs') }}
WHERE
topics [0] :: STRING = '0xe35dddd4ea75d7e9b3fe93af4f4e40e778c3da4074c9d93e7c6536f1e803c1eb'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -51,6 +51,7 @@ WITH base_evt AS (
WHERE
topics [0] :: STRING = '0xe35dddd4ea75d7e9b3fe93af4f4e40e778c3da4074c9d93e7c6536f1e803c1eb'
AND origin_to_address IS NOT NULL
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -126,6 +126,7 @@ dst_info AS (
WHERE
contract_address = '0x25ab3efd52e6470681ce037cd546dc60726948d3'
AND topics [0] :: STRING = '0x5ce4019f772fda6cb703b26bce3ec3006eb36b73f1d3a0eb441213317d9f5e9d'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -40,6 +40,7 @@ WITH base_evt AS (
WHERE
topics [0] :: STRING = '0x0d969ae475ff6fcaf0dcfa760d4d8607244e8d95e9bf426f8d5d69f9a3e525af'
AND contract_address = '0x1633d66ca91ce4d81f63ea047b7b19beb92df7f3'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -1,9 +1,10 @@
-- depends_on: {{ ref('silver__complete_token_prices') }}
{{ config(
materialized = 'incremental',
incremental_strategy = 'delete+insert',
unique_key = ['block_number','platform','version'],
cluster_by = ['block_timestamp::DATE'],
tags = ['curated','reorg']
tags = ['curated','reorg','heal']
) }}
WITH across AS (
@ -33,18 +34,17 @@ WITH across AS (
FROM
{{ ref('silver_bridge__across_fundsdeposited') }}
{% if is_incremental() and 'across' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'across' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
),
across_v3 AS (
SELECT
block_number,
block_timestamp,
@ -70,11 +70,11 @@ across_v3 AS (
FROM
{{ ref('silver_bridge__across_v3fundsdeposited') }}
{% if is_incremental() and 'across_v3' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'across_v3' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
@ -106,11 +106,11 @@ axelar AS (
FROM
{{ ref('silver_bridge__axelar_contractcallwithtoken') }}
{% if is_incremental() and 'axelar' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'axelar' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
@ -142,11 +142,11 @@ celer_cbridge AS (
FROM
{{ ref('silver_bridge__celer_cbridge_send') }}
{% if is_incremental() and 'celer_cbridge' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'celer_cbridge' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
@ -178,11 +178,11 @@ dln_debridge AS (
FROM
{{ ref('silver_bridge__dln_debridge_createdorder') }}
{% if is_incremental() and 'dln_debridge' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'dln_debridge' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
@ -214,11 +214,11 @@ eywa AS (
FROM
{{ ref('silver_bridge__eywa_requestsent') }}
{% if is_incremental() and 'eywa' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'eywa' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
@ -250,11 +250,11 @@ hop AS (
FROM
{{ ref('silver_bridge__hop_transfersent') }}
{% if is_incremental() and 'hop' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'hop' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
@ -286,11 +286,11 @@ meson AS (
FROM
{{ ref('silver_bridge__meson_transfers') }}
{% if is_incremental() and 'meson' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'meson' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
@ -322,11 +322,11 @@ multichain AS (
FROM
{{ ref('silver_bridge__multichain_v7_loganyswapout') }}
{% if is_incremental() and 'multichain' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'multichain' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
@ -358,11 +358,11 @@ stargate AS (
FROM
{{ ref('silver_bridge__stargate_swap') }}
{% if is_incremental() and 'stargate' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'stargate' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
@ -394,11 +394,11 @@ symbiosis AS (
FROM
{{ ref('silver_bridge__symbiosis_synthesizerequest') }}
{% if is_incremental() and 'symbiosis' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'symbiosis' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
@ -430,11 +430,11 @@ synapse_tb AS (
FROM
{{ ref('silver_bridge__synapse_token_bridge') }}
{% if is_incremental() and 'synapse_tb' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'synapse_tb' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
@ -466,11 +466,11 @@ synapse_tbs AS (
FROM
{{ ref('silver_bridge__synapse_tokenbridgeandswap') }}
{% if is_incremental() and 'synapse_tbs' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'synapse_tbs' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
@ -502,11 +502,11 @@ wormhole AS (
FROM
{{ ref('silver_bridge__wormhole_transfers') }}
{% if is_incremental() and 'wormhole' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'wormhole' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
@ -583,7 +583,7 @@ all_protocols AS (
FROM
wormhole
),
FINAL AS (
complete_bridge_activity AS (
SELECT
block_number,
block_timestamp,
@ -639,7 +639,7 @@ FINAL AS (
2
)
ELSE NULL
END AS amount_usd_unadj,
END AS amount_usd,
_id,
b._inserted_timestamp
FROM
@ -664,6 +664,183 @@ FINAL AS (
) = LOWER(
b.destination_chain
)
),
{% if is_incremental() and var(
'HEAL_MODEL'
) %}
heal_model AS (
SELECT
block_number,
block_timestamp,
origin_from_address,
origin_to_address,
origin_function_signature,
tx_hash,
event_index,
bridge_address,
event_name,
platform,
version,
sender,
receiver,
destination_chain_receiver,
destination_chain_id,
destination_chain,
t0.token_address,
C.token_symbol AS token_symbol,
C.token_decimals AS token_decimals,
amount_unadj,
CASE
WHEN C.token_decimals IS NOT NULL THEN (amount_unadj / pow(10, C.token_decimals))
ELSE amount_unadj
END AS amount_heal,
CASE
WHEN C.token_decimals IS NOT NULL THEN amount_heal * p.price
ELSE NULL
END AS amount_usd_heal,
_id,
t0._inserted_timestamp
FROM
{{ this }}
t0
LEFT JOIN {{ ref('silver__contracts') }} C
ON t0.token_address = C.contract_address
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
p
ON t0.token_address = p.token_address
AND DATE_TRUNC(
'hour',
block_timestamp
) = p.hour
WHERE
CONCAT(
t0.block_number,
'-',
t0.platform,
'-',
t0.version
) IN (
SELECT
CONCAT(
t1.block_number,
'-',
t1.platform,
'-',
t1.version
)
FROM
{{ this }}
t1
WHERE
t1.token_decimals IS NULL
AND t1._inserted_timestamp < (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
AND EXISTS (
SELECT
1
FROM
{{ ref('silver__contracts') }} C
WHERE
C._inserted_timestamp > DATEADD('DAY', -14, SYSDATE())
AND C.token_decimals IS NOT NULL
AND C.contract_address = t1.token_address)
GROUP BY
1
)
OR CONCAT(
t0.block_number,
'-',
t0.platform,
'-',
t0.version
) IN (
SELECT
CONCAT(
t2.block_number,
'-',
t2.platform,
'-',
t2.version
)
FROM
{{ this }}
t2
WHERE
t2.amount_usd IS NULL
AND t2._inserted_timestamp < (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
AND EXISTS (
SELECT
1
FROM
{{ ref('silver__complete_token_prices') }}
p
WHERE
p._inserted_timestamp > DATEADD('DAY', -14, SYSDATE())
AND p.price IS NOT NULL
AND p.token_address = t2.token_address
AND p.hour = DATE_TRUNC(
'hour',
t2.block_timestamp
)
)
GROUP BY
1
)
),
{% endif %}
FINAL AS (
SELECT
*
FROM
complete_bridge_activity
{% if is_incremental() and var(
'HEAL_MODEL'
) %}
UNION ALL
SELECT
block_number,
block_timestamp,
origin_from_address,
origin_to_address,
origin_function_signature,
tx_hash,
event_index,
bridge_address,
event_name,
platform,
version,
sender,
receiver,
destination_chain_receiver,
destination_chain_id,
destination_chain,
token_address,
token_symbol,
token_decimals,
amount_unadj,
amount_heal AS amount,
amount_usd_heal AS amount_usd,
_id,
_inserted_timestamp
FROM
heal_model
{% endif %}
)
SELECT
block_number,
@ -687,10 +864,7 @@ SELECT
token_decimals,
amount_unadj,
amount,
CASE
WHEN amount_usd_unadj < 1e+15 THEN amount_usd_unadj
ELSE NULL
END AS amount_usd,
amount_usd,
_id,
_inserted_timestamp,
{{ dbt_utils.generate_surrogate_key(
@ -701,7 +875,7 @@ SELECT
'{{ invocation_id }}' AS _invocation_id
FROM
FINAL
WHERE destination_chain <> 'arbitrum'
qualify (ROW_NUMBER() over (PARTITION BY _id
WHERE
destination_chain <> 'arbitrum' qualify (ROW_NUMBER() over (PARTITION BY _id
ORDER BY
_inserted_timestamp DESC)) = 1

View File

@ -20,7 +20,8 @@ WITH base_contracts AS (
WHERE
from_address = '0x55bdb4164d28fbaf0898e0ef14a589ac09ac9970'
AND TYPE ILIKE 'create%'
AND tx_status ILIKE 'success'
AND tx_status = 'SUCCESS'
AND trace_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -66,6 +66,7 @@ base_evt AS (
ON d.contract_address = p.pool_address
WHERE
topics [0] :: STRING = '0x34660fc8af304464529f48a778e03d03e4d34bcd5f9b6f0cfbf3cd238c642f7f'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -44,6 +44,7 @@ WITH base_evt AS (
'0x0425841529882628880fbd228ac90606e0c2e09a',
'0x01a3c8e513b758ebb011f7afaf6c37616c9c24d9'
)
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -43,6 +43,7 @@ WITH base_evt AS (
)
AND contract_address = '0x6f4e8eba4d337f874ab57478acc2cb5bacdc19c9'
AND origin_to_address IS NOT NULL
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -50,6 +50,7 @@ WITH base_evt AS (
WHERE
topics [0] :: STRING = '0x91f25e9be0134ec851830e0e76dc71e06f9dade75a9b84e9524071dbbc319425'
AND contract_address = '0x6f4e8eba4d337f874ab57478acc2cb5bacdc19c9'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -31,6 +31,7 @@ WITH pools_registered AS (
WHERE
topics [0] :: STRING = '0x3c13bc30b8e878c53fd2a36b679409c073afd75950be43d8858768e956fbc20e' --PoolRegistered
AND contract_address = '0xba12222222228d8ba445958a75a0704d566bf2c8'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (
@ -72,6 +73,7 @@ tokens_registered AS (
FROM
pools_registered
)
AND tx_status = 'SUCCESS'
),
function_sigs AS (
SELECT

View File

@ -54,6 +54,7 @@ swaps_base AS (
WHERE
topics [0] :: STRING = '0x2170c741c41531aec20e7c107c24eecfdd15e69c9bb0a8dd37b1840b9e0b207b'
AND contract_address = '0xba12222222228d8ba445958a75a0704d566bf2c8'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -33,6 +33,7 @@ WITH pool_creation AS (
--PairCreated v2
'0x91ccaa7a278130b65168c3a0c8d3bcae84cf5e43704342bd3ec0b59e59c036db'
) --v3
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -33,8 +33,8 @@ WITH contract_deployments AS (
'0xb17b674d9c5cb2e441f8e196a2f048a81355d031'
)
AND TYPE ILIKE 'create%'
AND tx_status ILIKE 'SUCCESS'
AND trace_status ILIKE 'SUCCESS'
AND tx_status = 'SUCCESS'
AND trace_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -69,6 +69,7 @@ curve_base AS (
'0xb2e76ae99761dc136e598d4a629bb347eccb9532a5f8bbd72e18467c3c34cc98',
'0xd013ca23e77a65003c2c659c5442c00c805371b7fc1ebd4c206c41d1536bd90b'
)
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -24,6 +24,7 @@ WITH pool_events AS (
WHERE
contract_address = '0xbcc3401e16c25eaf4d3fed632ce3288503883b1f' --DODOZoo
AND topics [0] :: STRING = '0x5c428a2e12ecaa744a080b25b4cda8b86359c82d726575d7d747e07708071f93' --DODOBirth
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -64,6 +64,7 @@ sell_base_token AS (
FROM
proxies
)
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (
@ -117,6 +118,7 @@ buy_base_token AS (
FROM
proxies
)
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -42,6 +42,7 @@ WITH pools AS (
--NewDSP
'0xaf5c5f12a80fc937520df6fcaed66262a4cc775e0f3fceaf7a7cfe476d9a751d' --NewDVM
)
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -89,6 +89,7 @@ swaps_base AS (
FROM
proxies
)
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -31,6 +31,7 @@ WITH pool_creation AS (
'0x8374a74a728f06bea6b7259c68aa7bbb732bfead' --v2 factory
)
AND topics [0] :: STRING = '0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9' --pairCreated
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -59,6 +59,7 @@ swaps_base AS (
ON l.contract_address = pool_address
WHERE
l.topics [0] :: STRING = '0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822' --Swap
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -69,6 +69,7 @@ WITH swaps_base AS (
WHERE
contract_address = '0x489ee077994b6658eafa855c308275ead8097c4a'
AND topics [0] :: STRING = '0x0874b2d545cb271cdbda4e093020c452328b24af12382ed62c4d00f5c26709db'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -24,7 +24,8 @@ WITH contract_deployments AS (
'0x75fb2ab4d5b0de8b1a1acdc9124887d35d459084'
)
AND TYPE ILIKE 'create%'
AND tx_status ILIKE 'success'
AND tx_status = 'SUCCESS'
AND trace_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -67,6 +67,7 @@ router_swaps_base AS (
ON l.contract_address = p.pool_address
WHERE
l.topics [0] :: STRING = '0xb709ddcc6550418e9b89df1f4938071eeaa3f6376309904c77e15d46b16066f5' --swap
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (
@ -131,6 +132,7 @@ swaps_base AS (
ON l.contract_address = p.pool_address
WHERE
l.topics [0] :: STRING = '0x8cf3dec1929508e5677d7db003124e74802bfba7250a572205a9986d86ca9f1e' --swap
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -21,6 +21,7 @@ WITH contract_deployments AS (
WHERE
contract_address = LOWER('0xdE828fdc3F497F16416D1bB645261C7C6a62DAb5')
AND topics [0] :: STRING = '0xdbd2a1ea6808362e6adbec4db4969cbc11e3b0b28fb6c74cb342defaaf1daada'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -51,6 +51,7 @@ swaps AS (
ON l.contract_address = p.pool_address
WHERE
l.topics [0] :: STRING = '0x34f57786fb01682fb4eec88d340387ef01a168fe345ea5b76f709d4e560c10eb' --Trade
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -34,6 +34,7 @@ WITH pool_creation AS (
WHERE
contract_address = LOWER('0xD9bfE9979e9CA4b2fe84bA5d4Cf963bBcB376974') --dynamic fee factory
AND topics [0] :: STRING = '0xfc574402c445e75f2b79b67884ff9c662244dce454c5ae68935fcd0bebb7c8ff' --created pool
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -64,6 +64,7 @@ swaps_base AS (
ON p.pool_address = l.contract_address
WHERE
l.topics [0] :: STRING = '0x606ecd02b3e3b4778f8e97b2e03351de14224efaa5fa64e62200afc9395c2499' --Dynamic Swap
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -39,6 +39,7 @@ WITH pool_creation AS (
WHERE
contract_address = LOWER('0x1c758aF0688502e49140230F6b0EBd376d429be5') --static pool factory
AND topics [0] :: STRING = '0xb6bce363b712c921bead4bcc977289440eb6172eb89e258e3a25bd49ca806de6' --create pool
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -64,6 +64,7 @@ swaps_base AS (
ON p.pool_address = l.contract_address
WHERE
l.topics [0] :: STRING = '0x606ecd02b3e3b4778f8e97b2e03351de14224efaa5fa64e62200afc9395c2499' -- static swap
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -33,6 +33,7 @@ WITH pool_creation AS (
'0xc7a590291e07b9fe9e64b86c58fd8fc764308c4a'
) --KyberSwap: Elastic Factory
AND topics [0] :: STRING = '0x783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b7118' --Create pool
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -77,6 +77,7 @@ swaps_base AS (
ON p.pool_address = l.contract_address
WHERE
topics [0] :: STRING = '0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67' -- elastic swap
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -32,6 +32,7 @@ WITH created_pools AS (
WHERE
topics [0] = '0x783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b7118'
AND contract_address = lower('0xAA2cd7477c451E703f3B9Ba5663334914763edF8')
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (
@ -58,6 +59,7 @@ initial_info AS (
{{ ref('silver__logs') }}
WHERE
topics [0] :: STRING = '0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

File diff suppressed because it is too large Load Diff

View File

@ -27,6 +27,7 @@ WITH pool_creation AS (
WHERE
contract_address = LOWER('0xFe8EC10Fe07A6a6f4A2584f8cD9FE232930eAF55')
AND topics [0] :: STRING = '0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9' --PairCreated
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -27,6 +27,7 @@ WITH pool_creation AS (
WHERE
contract_address = LOWER('0xc35DADB65012eC5796536bD9864eD8773aBc74C4')
AND topics [0] :: STRING = '0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9' --PairCreated
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -27,6 +27,7 @@ WITH pool_creation AS (
WHERE
contract_address = LOWER('0xae4ec9901c3076d0ddbe76a520f9e90a6227acb7')
AND topics [0] :: STRING = '0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9' --PairCreated
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -59,6 +59,7 @@ swaps_base AS (
ON p.pool_address = l.contract_address
WHERE
l.topics [0] :: STRING = '0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822' --Swap
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -79,6 +79,7 @@ swaps_base AS (
ON lb_pair = l.contract_address
WHERE
topics [0] :: STRING = '0xad7d6f97abf51ce18e17a38f4d70e975be9c0708474987bb3e26ad21bd93ca70' --Swap
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -35,6 +35,7 @@ WITH pool_creation AS (
'0x8597db3ba8de6baadeda8cba4dac653e24a0e57b'
)
AND topics [0] :: STRING = '0x2c8d104b27c6b7f4492017a6f5cf3803043688934ebcaa6a03540beeaf976aff' --LB PairCreated
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -78,6 +78,7 @@ swaps_base AS (
ON lb_pair = l.contract_address
WHERE
topics [0] :: STRING = '0xc528cda9e500228b16ce84fadae290d9a49aecb17483110004c5af0a07f6fd73' --Swap
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -27,6 +27,7 @@ WITH pool_creation AS (
WHERE
contract_address = LOWER('0xf1D7CC64Fb4452F05c498126312eBE29f30Fbcf9')
AND topics [0] :: STRING = '0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9' --PairCreated
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -32,6 +32,7 @@ WITH created_pools AS (
WHERE
topics [0] = '0x783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b7118'
AND contract_address = '0x1f98431c8ad98523631ae4a59f267346ea31f984'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (
@ -58,6 +59,7 @@ initial_info AS (
{{ ref('silver__logs') }}
WHERE
topics [0] :: STRING = '0x98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -66,6 +66,7 @@ WITH router_swaps_base AS (
'0xb130a49065178465931d4f887056328cea5d723f'
) --v3
AND topics [0] :: STRING = '0x27c98e911efdd224f4002f6cd831c3ad0d2759ee176f9ee8466d95826af22a1c' --WooRouterSwap
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (
@ -141,6 +142,7 @@ swaps_base AS (
FROM
router_swaps_base
)
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -32,6 +32,7 @@ WITH pool_creation AS (
--PairCreated v2
'0x91ccaa7a278130b65168c3a0c8d3bcae84cf5e43704342bd3ec0b59e59c036db'
) --v3
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -1,9 +1,10 @@
-- depends_on: {{ ref('silver__complete_token_prices') }}
{{ config(
materialized = 'incremental',
incremental_strategy = 'delete+insert',
unique_key = ['block_number','platform'],
cluster_by = ['block_timestamp::DATE'],
tags = ['reorg','curated']
tags = ['reorg','curated','heal']
) }}
WITH aave AS (
@ -30,19 +31,19 @@ WITH aave AS (
FROM
{{ ref('silver__aave_borrows') }} A
{% if is_incremental() and 'aave' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'aave' not in var('HEAL_MODELS') %}
WHERE
A._inserted_timestamp >= (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '36 hours'
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
),
radiant as (
radiant AS (
SELECT
tx_hash,
block_number,
@ -65,19 +66,19 @@ radiant as (
FROM
{{ ref('silver__radiant_borrows') }} A
{% if is_incremental() and 'radiant' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'radiant' not in var('HEAL_MODELS') %}
WHERE
A._inserted_timestamp >= (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '36 hours'
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
lodestar as (
lodestar AS (
SELECT
tx_hash,
block_number,
@ -100,19 +101,19 @@ lodestar as (
FROM
{{ ref('silver__lodestar_borrows') }} A
{% if is_incremental() and 'lodestar' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'lodestar' not in var('HEAL_MODELS') %}
WHERE
A._inserted_timestamp >= (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '36 hours'
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
dforce as (
dforce AS (
SELECT
tx_hash,
block_number,
@ -135,19 +136,19 @@ dforce as (
FROM
{{ ref('silver__dforce_borrows') }} A
{% if is_incremental() and 'dforce' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'dforce' not in var('HEAL_MODELS') %}
WHERE
A._inserted_timestamp >= (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '36 hours'
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
comp as (
comp AS (
SELECT
tx_hash,
block_number,
@ -171,19 +172,19 @@ comp as (
{{ ref('silver__comp_borrows') }}
l
{% if is_incremental() and 'comp' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'comp' not in var('HEAL_MODELS') %}
WHERE
l._inserted_timestamp >= (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '36 hours'
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
silo as (
silo AS (
SELECT
tx_hash,
block_number,
@ -207,19 +208,19 @@ silo as (
{{ ref('silver__silo_borrows') }}
l
{% if is_incremental() and 'silo' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'silo' not in var('HEAL_MODELS') %}
WHERE
l._inserted_timestamp >= (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '36 hours'
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
borrow_union as (
borrow_union AS (
SELECT
*
FROM
@ -250,7 +251,7 @@ borrow_union as (
FROM
silo
),
FINAL AS (
complete_lending_borrows AS (
SELECT
tx_hash,
block_number,
@ -287,8 +288,126 @@ FINAL AS (
'hour',
block_timestamp
) = p.hour
LEFT JOIN {{ ref('silver__contracts') }} C
ON b.token_address = C.contract_address
),
{% if is_incremental() and var(
'HEAL_MODEL'
) %}
heal_model AS (
SELECT
tx_hash,
block_number,
block_timestamp,
event_index,
origin_from_address,
origin_to_address,
origin_function_signature,
t0.contract_address,
event_name,
borrower,
protocol_market,
t0.token_address,
t0.token_symbol,
amount_unadj,
amount,
ROUND(
amount * p.price,
2
) AS amount_usd_heal,
platform,
t0.blockchain,
t0._LOG_ID,
t0._INSERTED_TIMESTAMP
FROM
{{ this }}
t0
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
p
ON t0.token_address = p.token_address
AND DATE_TRUNC(
'hour',
block_timestamp
) = p.hour
WHERE
CONCAT(
t0.block_number,
'-',
t0.platform
) IN (
SELECT
CONCAT(
t1.block_number,
'-',
t1.platform
)
FROM
{{ this }}
t1
WHERE
t1.amount_usd IS NULL
AND t1._inserted_timestamp < (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
AND EXISTS (
SELECT
1
FROM
{{ ref('silver__complete_token_prices') }}
p
WHERE
p._inserted_timestamp > DATEADD('DAY', -14, SYSDATE())
AND p.price IS NOT NULL
AND p.token_address = t1.token_address
AND p.hour = DATE_TRUNC(
'hour',
t1.block_timestamp
)
)
GROUP BY
1
)
),
{% endif %}
FINAL AS (
SELECT
*
FROM
complete_lending_borrows
{% if is_incremental() and var(
'HEAL_MODEL'
) %}
UNION ALL
SELECT
tx_hash,
block_number,
block_timestamp,
event_index,
origin_from_address,
origin_to_address,
origin_function_signature,
contract_address,
event_name,
borrower,
protocol_market,
token_address,
token_symbol,
amount_unadj,
amount,
amount_usd_heal AS amount_usd,
platform,
blockchain,
_LOG_ID,
_INSERTED_TIMESTAMP
FROM
heal_model
{% endif %}
)
SELECT
*,

View File

@ -1,9 +1,10 @@
-- depends_on: {{ ref('silver__complete_token_prices') }}
{{ config(
materialized = 'incremental',
incremental_strategy = 'delete+insert',
unique_key = ['block_number','platform'],
cluster_by = ['block_timestamp::DATE'],
tags = ['reorg','curated']
tags = ['reorg','curated','heal']
) }}
WITH aave AS (
@ -30,17 +31,17 @@ WITH aave AS (
FROM
{{ ref('silver__aave_deposits') }}
{% if is_incremental() and 'aave' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'aave' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
radiant as (
radiant AS (
SELECT
tx_hash,
block_number,
@ -63,17 +64,17 @@ radiant as (
FROM
{{ ref('silver__radiant_deposits') }}
{% if is_incremental() and 'radiant' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'radiant' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
comp as (
comp AS (
SELECT
tx_hash,
block_number,
@ -96,17 +97,17 @@ comp as (
FROM
{{ ref('silver__comp_deposits') }}
{% if is_incremental() and 'comp' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'comp' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
lodestar as (
lodestar AS (
SELECT
tx_hash,
block_number,
@ -129,17 +130,17 @@ lodestar as (
FROM
{{ ref('silver__lodestar_deposits') }}
{% if is_incremental() and 'lodestar' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'lodestar' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
dforce as (
dforce AS (
SELECT
tx_hash,
block_number,
@ -162,17 +163,17 @@ dforce as (
FROM
{{ ref('silver__dforce_deposits') }}
{% if is_incremental() and 'dforce' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'dforce' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
silo as (
silo AS (
SELECT
tx_hash,
block_number,
@ -195,17 +196,17 @@ silo as (
FROM
{{ ref('silver__silo_deposits') }}
{% if is_incremental() and 'aave' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'aave' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
deposits as (
deposits AS (
SELECT
*
FROM
@ -236,7 +237,7 @@ deposits as (
FROM
silo
),
FINAL AS (
complete_lending_deposits AS (
SELECT
tx_hash,
block_number,
@ -275,8 +276,126 @@ FINAL AS (
'hour',
block_timestamp
) = p.hour
LEFT JOIN {{ ref('silver__contracts') }} C
ON A.token_address = C.contract_address
),
{% if is_incremental() and var(
'HEAL_MODEL'
) %}
heal_model AS (
SELECT
tx_hash,
block_number,
block_timestamp,
event_index,
origin_from_address,
origin_to_address,
origin_function_signature,
t0.contract_address,
event_name,
protocol_market,
depositor,
t0.token_address,
t0.token_symbol,
amount_unadj,
amount,
ROUND(
amount * p.price,
2
) AS amount_usd_heal,
platform,
t0.blockchain,
t0._LOG_ID,
t0._INSERTED_TIMESTAMP
FROM
{{ this }}
t0
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
p
ON t0.token_address = p.token_address
AND DATE_TRUNC(
'hour',
block_timestamp
) = p.hour
WHERE
CONCAT(
t0.block_number,
'-',
t0.platform
) IN (
SELECT
CONCAT(
t1.block_number,
'-',
t1.platform
)
FROM
{{ this }}
t1
WHERE
t1.amount_usd IS NULL
AND t1._inserted_timestamp < (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
AND EXISTS (
SELECT
1
FROM
{{ ref('silver__complete_token_prices') }}
p
WHERE
p._inserted_timestamp > DATEADD('DAY', -14, SYSDATE())
AND p.price IS NOT NULL
AND p.token_address = t1.token_address
AND p.hour = DATE_TRUNC(
'hour',
t1.block_timestamp
)
)
GROUP BY
1
)
),
{% endif %}
FINAL AS (
SELECT
*
FROM
complete_lending_deposits
{% if is_incremental() and var(
'HEAL_MODEL'
) %}
UNION ALL
SELECT
tx_hash,
block_number,
block_timestamp,
event_index,
origin_from_address,
origin_to_address,
origin_function_signature,
contract_address,
event_name,
protocol_market,
depositor,
token_address,
token_symbol,
amount_unadj,
amount,
amount_usd_heal AS amount_usd,
platform,
blockchain,
_LOG_ID,
_INSERTED_TIMESTAMP
FROM
heal_model
{% endif %}
)
SELECT
*,

View File

@ -1,9 +1,10 @@
-- depends_on: {{ ref('silver__complete_token_prices') }}
{{ config(
materialized = 'incremental',
incremental_strategy = 'delete+insert',
unique_key = ['block_number','platform'],
cluster_by = ['block_timestamp::DATE'],
tags = ['reorg','curated']
tags = ['reorg','curated','heal']
) }}
WITH aave AS (
@ -33,17 +34,17 @@ WITH aave AS (
FROM
{{ ref('silver__aave_flashloans') }}
{% if is_incremental() and 'aave' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'aave' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
),
radiant as (
radiant AS (
SELECT
tx_hash,
block_number,
@ -62,24 +63,24 @@ radiant as (
initiator_address,
target_address,
platform,
symbol AS token_symbol,
symbol,
blockchain,
_LOG_ID,
_INSERTED_TIMESTAMP
FROM
{{ ref('silver__radiant_flashloans') }}
{% if is_incremental() and 'radiant' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'radiant' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
flashloans as (
flashloans AS (
SELECT
*
FROM
@ -90,7 +91,7 @@ flashloans as (
FROM
radiant
),
FINAL AS (
complete_lending_flashloans AS (
SELECT
tx_hash,
block_number,
@ -105,7 +106,7 @@ FINAL AS (
initiator_address AS initiator,
target_address AS target,
f.token_address AS flashloan_token,
token_symbol AS flashloan_token_symbol,
f.symbol AS flashloan_token_symbol,
flashloan_amount_unadj,
flashloan_amount,
ROUND(
@ -131,8 +132,179 @@ FINAL AS (
'hour',
block_timestamp
) = p.hour
LEFT JOIN {{ ref('silver__contracts') }} C
ON f.token_address = C.contract_address
),
{% if is_incremental() and var(
'HEAL_MODEL'
) %}
heal_model AS (
SELECT
tx_hash,
block_number,
block_timestamp,
event_index,
origin_from_address,
origin_to_address,
origin_function_signature,
t0.contract_address,
event_name,
protocol_market,
initiator,
target,
flashloan_token,
flashloan_token_symbol,
flashloan_amount_unadj,
flashloan_amount,
ROUND(
flashloan_amount * p.price,
2
) AS flashloan_amount_usd_heal,
premium_amount_unadj,
premium_amount,
ROUND(
premium_amount * p.price,
2
) AS premium_amount_usd_heal,
platform,
t0.blockchain,
t0._LOG_ID,
t0._INSERTED_TIMESTAMP
FROM
{{ this }}
t0
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
p
ON t0.flashloan_token = p.token_address
AND DATE_TRUNC(
'hour',
block_timestamp
) = p.hour
WHERE
CONCAT(
t0.block_number,
'-',
t0.platform
) IN (
SELECT
CONCAT(
t1.block_number,
'-',
t1.platform
)
FROM
{{ this }}
t1
WHERE
t1.flashloan_amount_usd IS NULL
AND t1._inserted_timestamp < (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
AND EXISTS (
SELECT
1
FROM
{{ ref('silver__complete_token_prices') }}
p
WHERE
p._inserted_timestamp > DATEADD('DAY', -14, SYSDATE())
AND p.price IS NOT NULL
AND p.token_address = t1.flashloan_token
AND p.hour = DATE_TRUNC(
'hour',
t1.block_timestamp
)
)
GROUP BY
1
)
OR CONCAT(
t0.block_number,
'-',
t0.platform
) IN (
SELECT
CONCAT(
t2.block_number,
'-',
t2.platform
)
FROM
{{ this }}
t2
WHERE
t2.premium_amount_usd IS NULL
AND t2._inserted_timestamp < (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
AND EXISTS (
SELECT
1
FROM
{{ ref('silver__complete_token_prices') }}
p
WHERE
p._inserted_timestamp > DATEADD('DAY', -14, SYSDATE())
AND p.price IS NOT NULL
AND p.token_address = t2.flashloan_token
AND p.hour = DATE_TRUNC(
'hour',
t2.block_timestamp
)
)
GROUP BY
1
)
),
{% endif %}
FINAL AS (
SELECT
*
FROM
complete_lending_flashloans
{% if is_incremental() and var(
'HEAL_MODEL'
) %}
UNION ALL
SELECT
tx_hash,
block_number,
block_timestamp,
event_index,
origin_from_address,
origin_to_address,
origin_function_signature,
contract_address,
event_name,
protocol_market,
initiator,
target,
flashloan_token,
flashloan_token_symbol,
flashloan_amount_unadj,
flashloan_amount,
flashloan_amount_usd_heal AS flashloan_amount_usd,
premium_amount_unadj,
premium_amount,
premium_amount_usd_heal AS premium_amount_usd,
platform,
blockchain,
_LOG_ID,
_INSERTED_TIMESTAMP
FROM
heal_model
{% endif %}
)
SELECT
*,

View File

@ -1,12 +1,13 @@
-- depends_on: {{ ref('silver__complete_token_prices') }}
{{ config(
materialized = 'incremental',
incremental_strategy = 'delete+insert',
unique_key = ['block_number','platform'],
cluster_by = ['block_timestamp::DATE'],
tags = ['reorg','curated']
tags = ['reorg','curated','heal']
) }}
WITH Lodestar AS (
WITH lodestar AS (
SELECT
tx_hash,
@ -35,17 +36,17 @@ WITH Lodestar AS (
{{ ref('silver__lodestar_liquidations') }}
l
{% if is_incremental() and 'lodestar' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'lodestar' not in var('HEAL_MODELS') %}
WHERE
l._inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
),
dforce as (
dforce AS (
SELECT
tx_hash,
block_number,
@ -73,17 +74,17 @@ dforce as (
{{ ref('silver__dforce_liquidations') }}
l
{% if is_incremental() and 'dforce' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'dforce' not in var('HEAL_MODELS') %}
WHERE
l._inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
aave as (
aave AS (
SELECT
tx_hash,
block_number,
@ -110,17 +111,17 @@ aave as (
FROM
{{ ref('silver__aave_liquidations') }}
{% if is_incremental() and 'aave' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'aave' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '12 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
radiant as (
radiant AS (
SELECT
tx_hash,
block_number,
@ -147,18 +148,17 @@ radiant as (
FROM
{{ ref('silver__radiant_liquidations') }}
{% if is_incremental() and 'radiant' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'radiant' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
silo as (
silo AS (
SELECT
tx_hash,
block_number,
@ -185,18 +185,17 @@ silo as (
FROM
{{ ref('silver__silo_liquidations') }}
{% if is_incremental() and 'silo' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'silo' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
comp as (
comp AS (
SELECT
tx_hash,
block_number,
@ -224,17 +223,17 @@ comp as (
{{ ref('silver__comp_liquidations') }}
l
{% if is_incremental() and 'comp' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'comp' not in var('HEAL_MODELS') %}
WHERE
l._inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
liquidation_union as (
liquidation_union AS (
SELECT
*
FROM
@ -265,40 +264,7 @@ liquidation_union as (
FROM
silo
),
contracts AS (
SELECT
*
FROM
{{ ref('silver__contracts') }} C
WHERE
C.contract_address IN (
SELECT
DISTINCT(collateral_asset) AS asset
FROM
liquidation_union
)
),
prices AS (
SELECT
*
FROM
{{ ref('price__ez_prices_hourly') }}
p
WHERE
token_address IN (
SELECT
DISTINCT(collateral_asset) AS asset
FROM
liquidation_union
)
AND HOUR > (
SELECT
MIN(block_timestamp)
FROM
liquidation_union
)
),
FINAL AS (
complete_lending_liquidations AS (
SELECT
tx_hash,
block_number,
@ -339,14 +305,145 @@ FINAL AS (
A._INSERTED_TIMESTAMP
FROM
liquidation_union A
LEFT JOIN prices p
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
p
ON collateral_asset = p.token_address
AND DATE_TRUNC(
'hour',
block_timestamp
) = p.hour
LEFT JOIN contracts C
ON collateral_asset = C.contract_address
),
{% if is_incremental() and var(
'HEAL_MODEL'
) %}
heal_model AS (
SELECT
tx_hash,
block_number,
block_timestamp,
event_index,
origin_from_address,
origin_to_address,
origin_function_signature,
t0.contract_address,
event_name,
liquidator,
borrower,
protocol_market,
collateral_token,
collateral_token_symbol,
amount_unadj,
amount,
CASE
WHEN platform <> 'Compound V3' THEN ROUND(
amount * p.price,
2
)
ELSE ROUND(
amount_usd,
2
)
END AS amount_usd_heal,
debt_token,
debt_token_symbol,
platform,
t0.blockchain,
t0._LOG_ID,
t0._INSERTED_TIMESTAMP
FROM
{{ this }}
t0
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
p
ON t0.collateral_token = p.token_address
AND DATE_TRUNC(
'hour',
block_timestamp
) = p.hour
WHERE
CONCAT(
t0.block_number,
'-',
t0.platform
) IN (
SELECT
CONCAT(
t1.block_number,
'-',
t1.platform
)
FROM
{{ this }}
t1
WHERE
t1.amount_usd IS NULL
AND t1._inserted_timestamp < (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
AND EXISTS (
SELECT
1
FROM
{{ ref('silver__complete_token_prices') }}
p
WHERE
p._inserted_timestamp > DATEADD('DAY', -14, SYSDATE())
AND p.price IS NOT NULL
AND p.token_address = t1.collateral_token
AND p.hour = DATE_TRUNC(
'hour',
t1.block_timestamp
)
)
GROUP BY
1
)
),
{% endif %}
FINAL AS (
SELECT
*
FROM
complete_lending_liquidations
{% if is_incremental() and var(
'HEAL_MODEL'
) %}
UNION ALL
SELECT
tx_hash,
block_number,
block_timestamp,
event_index,
origin_from_address,
origin_to_address,
origin_function_signature,
contract_address,
event_name,
liquidator,
borrower,
protocol_market,
collateral_token,
collateral_token_symbol,
amount_unadj,
amount,
amount_usd_heal AS amount_usd,
debt_token,
debt_token_symbol,
platform,
blockchain,
_LOG_ID,
_INSERTED_TIMESTAMP
FROM
heal_model
{% endif %}
)
SELECT
*,

View File

@ -1,9 +1,10 @@
-- depends_on: {{ ref('silver__complete_token_prices') }}
{{ config(
materialized = 'incremental',
incremental_strategy = 'delete+insert',
unique_key = ['block_number','platform'],
cluster_by = ['block_timestamp::DATE'],
tags = ['reorg','curated']
tags = ['reorg','curated','heal']
) }}
WITH aave AS (
@ -31,17 +32,17 @@ WITH aave AS (
FROM
{{ ref('silver__aave_repayments') }}
{% if is_incremental() and 'aave' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'aave' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
),
radiant as (
radiant AS (
SELECT
tx_hash,
block_number,
@ -65,17 +66,17 @@ radiant as (
FROM
{{ ref('silver__radiant_repayments') }}
{% if is_incremental() and 'radiant' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'radiant' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
lodestar as (
lodestar AS (
SELECT
tx_hash,
block_number,
@ -96,20 +97,20 @@ lodestar as (
'arbitrum' AS blockchain,
_LOG_ID,
_INSERTED_TIMESTAMP
FROM
FROM
{{ ref('silver__lodestar_repayments') }}
{% if is_incremental() and 'lodestar' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'lodestar' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
),
dforce as (
dforce AS (
SELECT
tx_hash,
block_number,
@ -133,17 +134,17 @@ dforce as (
FROM
{{ ref('silver__dforce_repayments') }}
{% if is_incremental() and 'dforce' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'dforce' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
comp as (
comp AS (
SELECT
tx_hash,
block_number,
@ -167,17 +168,17 @@ comp as (
FROM
{{ ref('silver__comp_repayments') }}
{% if is_incremental() and 'comp' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'comp' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
silo as (
silo AS (
SELECT
tx_hash,
block_number,
@ -201,17 +202,17 @@ silo as (
FROM
{{ ref('silver__silo_repayments') }}
{% if is_incremental() and 'silo' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'silo' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
repayments as (
repayments AS (
SELECT
*
FROM
@ -242,7 +243,7 @@ repayments as (
FROM
silo
),
FINAL AS (
complete_lending_repayments AS (
SELECT
tx_hash,
block_number,
@ -281,8 +282,128 @@ FINAL AS (
'hour',
block_timestamp
) = p.hour
LEFT JOIN {{ ref('silver__contracts') }} C
ON A.token_address = C.contract_address
),
{% if is_incremental() and var(
'HEAL_MODEL'
) %}
heal_model AS (
SELECT
tx_hash,
block_number,
block_timestamp,
event_index,
origin_from_address,
origin_to_address,
origin_function_signature,
t0.contract_address,
event_name,
protocol_market,
payer,
borrower,
t0.token_address,
t0.token_symbol,
amount_unadj,
amount,
ROUND(
amount * p.price,
2
) AS amount_usd_heal,
platform,
t0.blockchain,
t0._LOG_ID,
t0._INSERTED_TIMESTAMP
FROM
{{ this }}
t0
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
p
ON t0.token_address = p.token_address
AND DATE_TRUNC(
'hour',
block_timestamp
) = p.hour
WHERE
CONCAT(
t0.block_number,
'-',
t0.platform
) IN (
SELECT
CONCAT(
t1.block_number,
'-',
t1.platform
)
FROM
{{ this }}
t1
WHERE
t1.amount_usd IS NULL
AND t1._inserted_timestamp < (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
AND EXISTS (
SELECT
1
FROM
{{ ref('silver__complete_token_prices') }}
p
WHERE
p._inserted_timestamp > DATEADD('DAY', -14, SYSDATE())
AND p.price IS NOT NULL
AND p.token_address = t1.token_address
AND p.hour = DATE_TRUNC(
'hour',
t1.block_timestamp
)
)
GROUP BY
1
)
),
{% endif %}
FINAL AS (
SELECT
*
FROM
complete_lending_repayments
{% if is_incremental() and var(
'HEAL_MODEL'
) %}
UNION ALL
SELECT
tx_hash,
block_number,
block_timestamp,
event_index,
origin_from_address,
origin_to_address,
origin_function_signature,
contract_address,
event_name,
protocol_market,
payer,
borrower,
token_address,
token_symbol,
amount_unadj,
amount,
amount_usd_heal AS amount_usd,
platform,
blockchain,
_LOG_ID,
_INSERTED_TIMESTAMP
FROM
heal_model
{% endif %}
)
SELECT
*,

View File

@ -1,9 +1,10 @@
-- depends_on: {{ ref('silver__complete_token_prices') }}
{{ config(
materialized = 'incremental',
incremental_strategy = 'delete+insert',
unique_key = ['block_number','platform'],
cluster_by = ['block_timestamp::DATE'],
tags = ['reorg','curated']
tags = ['reorg','curated','heal']
) }}
WITH aave AS (
@ -30,19 +31,19 @@ WITH aave AS (
FROM
{{ ref('silver__aave_withdraws') }}
{% if is_incremental() and 'aave' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'aave' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '36 hours'
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
),
radiant as (
radiant AS (
SELECT
tx_hash,
block_number,
@ -65,19 +66,19 @@ radiant as (
FROM
{{ ref('silver__radiant_withdraws') }}
{% if is_incremental() and 'radiant' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'radiant' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '36 hours'
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
comp as (
comp AS (
SELECT
tx_hash,
block_number,
@ -100,19 +101,19 @@ comp as (
FROM
{{ ref('silver__comp_withdraws') }}
{% if is_incremental() and 'comp' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'comp' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '36 hours'
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
lodestar as (
lodestar AS (
SELECT
tx_hash,
block_number,
@ -135,19 +136,19 @@ lodestar as (
FROM
{{ ref('silver__lodestar_withdraws') }}
{% if is_incremental() and 'lodestar' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'lodestar' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '36 hours'
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
dforce as (
dforce AS (
SELECT
tx_hash,
block_number,
@ -170,19 +171,19 @@ dforce as (
FROM
{{ ref('silver__dforce_withdraws') }}
{% if is_incremental() and 'dforce' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'dforce' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '36 hours'
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
silo as (
silo AS (
SELECT
tx_hash,
block_number,
@ -205,19 +206,19 @@ silo as (
FROM
{{ ref('silver__silo_withdraws') }}
{% if is_incremental() and 'silo' not in var('HEAL_CURATED_MODEL') %}
WHERE
{% if is_incremental() and 'silo' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '36 hours'
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
{% endif %}
{% endif %}
),
withdraws as (
withdraws AS (
SELECT
*
FROM
@ -248,7 +249,7 @@ withdraws as (
FROM
silo
),
FINAL AS (
complete_lending_withdraws AS (
SELECT
tx_hash,
block_number,
@ -286,8 +287,126 @@ FINAL AS (
'hour',
block_timestamp
) = p.hour
LEFT JOIN {{ ref('silver__contracts') }} C
ON A.token_address = C.contract_address
),
{% if is_incremental() and var(
'HEAL_MODEL'
) %}
heal_model AS (
SELECT
tx_hash,
block_number,
block_timestamp,
event_index,
origin_from_address,
origin_to_address,
origin_function_signature,
t0.contract_address,
event_name,
protocol_market,
depositor,
t0.token_address,
t0.token_symbol,
amount_unadj,
amount,
ROUND(
amount * p.price,
2
) AS amount_usd_heal,
platform,
t0.blockchain,
t0._log_id,
t0._inserted_timestamp
FROM
{{ this }}
t0
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
p
ON t0.token_address = p.token_address
AND DATE_TRUNC(
'hour',
block_timestamp
) = p.hour
WHERE
CONCAT(
t0.block_number,
'-',
t0.platform
) IN (
SELECT
CONCAT(
t1.block_number,
'-',
t1.platform
)
FROM
{{ this }}
t1
WHERE
t1.amount_usd IS NULL
AND t1._inserted_timestamp < (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
AND EXISTS (
SELECT
1
FROM
{{ ref('silver__complete_token_prices') }}
p
WHERE
p._inserted_timestamp > DATEADD('DAY', -14, SYSDATE())
AND p.price IS NOT NULL
AND p.token_address = t1.token_address
AND p.hour = DATE_TRUNC(
'hour',
t1.block_timestamp
)
)
GROUP BY
1
)
),
{% endif %}
FINAL AS (
SELECT
*
FROM
complete_lending_withdraws
{% if is_incremental() and var(
'HEAL_MODEL'
) %}
UNION ALL
SELECT
tx_hash,
block_number,
block_timestamp,
event_index,
origin_from_address,
origin_to_address,
origin_function_signature,
contract_address,
event_name,
protocol_market,
depositor,
token_address,
token_symbol,
amount_unadj,
amount,
amount_usd_heal AS amount_usd,
platform,
blockchain,
_log_id,
_inserted_timestamp
FROM
heal_model
{% endif %}
)
SELECT
*,

View File

@ -45,6 +45,7 @@ WITH borrow AS (
LOWER('0xA5EDBDD9646f8dFF606d7448e414884C7d905dCA'),
LOWER('0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf')
)
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND l._inserted_timestamp >= (

View File

@ -39,6 +39,7 @@ WITH supply AS (
ON asset = C.contract_address
WHERE
topics [0] = '0xfa56f7b24f17183d81894d3ac2ee654e3c26388d17a28dbd9549b8114304e1f4' --SupplyCollateral
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND l._inserted_timestamp >= (

View File

@ -43,6 +43,7 @@ WITH liquidations AS (
ON asset = C.contract_address
WHERE
topics [0] = '0x9850ab1af75177e4a9201c65a2cf7976d5d28e40ef63494b44366f86b2f9412e' --AbsorbCollateral
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND l._inserted_timestamp >= (

View File

@ -48,6 +48,7 @@ WITH repayments AS (
LOWER('0xA5EDBDD9646f8dFF606d7448e414884C7d905dCA'),
LOWER('0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf')
)
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND l._inserted_timestamp >= (

View File

@ -38,6 +38,7 @@ WITH withdraw AS (
ON token_address = C.contract_address
WHERE
topics [0] = '0xd6d480d5b3068db003533b170d67561494d72e3bf9fa40a266471351ebba9e16' --WithdrawCollateral
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND l._inserted_timestamp >= (

View File

@ -55,6 +55,7 @@ dforce_borrows AS (
asset_details
)
AND topics [0] :: STRING = '0x2dd79f4fccfd18c360ce7f9132f3621bf05eee18f995224badb32d17f172df73'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -52,6 +52,7 @@ dforce_deposits AS (
asset_details
)
AND topics [0] :: STRING = '0x2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -55,6 +55,7 @@ dforce_liquidations AS (
asset_details
)
AND topics [0] :: STRING = '0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -50,6 +50,7 @@ dforce_repayments AS (
asset_details
)
AND topics [0] :: STRING = '0x6fadbf7329d21f278e724fa0d4511001a158f2a97ee35c5bc4cf8b64417399ef'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -52,6 +52,7 @@ dforce_redemptions AS (
asset_details
)
AND topics [0] :: STRING = '0x3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -55,6 +55,7 @@ lodestar_borrows AS (
asset_details
)
AND topics [0] :: STRING = '0x2dd79f4fccfd18c360ce7f9132f3621bf05eee18f995224badb32d17f172df73'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -52,6 +52,7 @@ lodestar_deposits AS (
asset_details
)
AND topics [0] :: STRING = '0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -55,6 +55,7 @@ lodestar_liquidations AS (
asset_details
)
AND topics [0] :: STRING = '0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -50,6 +50,7 @@ lodestar_repayments AS (
asset_details
)
AND topics [0] :: STRING = '0x6fadbf7329d21f278e724fa0d4511001a158f2a97ee35c5bc4cf8b64417399ef'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -52,6 +52,7 @@ lodestar_redemptions AS (
asset_details
)
AND topics [0] :: STRING = '0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929'
AND tx_status = 'SUCCESS'
{% if is_incremental() %}
AND _inserted_timestamp >= (

View File

@ -38,11 +38,11 @@ WITH nft_base_models AS (
FROM
{{ ref('silver__seaport_1_1_sales') }}
{% if is_incremental() and 'seaport_1_1' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'seaport_1_1' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
@ -78,11 +78,11 @@ SELECT
FROM
{{ ref('silver__seaport_1_4_sales') }}
{% if is_incremental() and 'seaport_1_4' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'seaport_1_4' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
@ -118,11 +118,11 @@ SELECT
FROM
{{ ref('silver__seaport_1_5_sales') }}
{% if is_incremental() and 'seaport_1_5' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'seaport_1_5' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
@ -158,11 +158,11 @@ SELECT
FROM
{{ ref('silver__treasure_sales') }}
{% if is_incremental() and 'treasure' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'treasure' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
@ -198,11 +198,11 @@ SELECT
FROM
{{ ref('silver__seaport_1_6_sales') }}
{% if is_incremental() and 'seaport_1_6' not in var('HEAL_CURATED_MODEL') %}
{% if is_incremental() and 'seaport_1_6' not in var('HEAL_MODELS') %}
WHERE
_inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '36 hours'
MAX(_inserted_timestamp) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
@ -518,7 +518,7 @@ heal_model AS (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '36 hours'
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
@ -546,7 +546,7 @@ heal_model AS (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '36 hours'
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)
@ -585,7 +585,7 @@ heal_model AS (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '36 hours'
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)

View File

@ -362,7 +362,7 @@ heal_model AS (
SELECT
MAX(
_inserted_timestamp
) - INTERVAL '36 hours'
) - INTERVAL '{{ var("LOOKBACK", "4 hours") }}'
FROM
{{ this }}
)