AN-4705/prices-v2 (#269)

* prices v2 changes

* transfers

* bronze ref

* source column

* remove id

* yml

* revert id

* modified and id column

* native and provider tables

* lower

* new names

* overview docs

* docs

* id names

* deprecation notice

* yml tests

* docs

* ez refs

* alias

* docs

* update for new names and docs

* deprecation note

* addr desc
This commit is contained in:
drethereum 2024-05-01 12:44:49 -06:00 committed by GitHub
parent 14088c4299
commit 010b62b672
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
62 changed files with 963 additions and 138 deletions

View File

@ -0,0 +1,26 @@
{{ config (
materialized = 'view'
) }}
SELECT
asset_id,
symbol,
NAME,
decimals,
blockchain,
is_deprecated,
provider,
source,
_inserted_timestamp,
inserted_timestamp,
modified_timestamp,
complete_native_asset_metadata_id,
_invocation_id
FROM
{{ source(
'silver_crosschain',
'complete_native_asset_metadata'
) }}
WHERE
blockchain = 'ethereum'
AND symbol = 'ETH'

View File

@ -0,0 +1,29 @@
{{ config (
materialized = 'view'
) }}
SELECT
HOUR,
asset_id,
symbol,
NAME,
decimals,
price,
blockchain,
is_imputed,
is_deprecated,
provider,
source,
_inserted_timestamp,
inserted_timestamp,
modified_timestamp,
complete_native_prices_id,
_invocation_id
FROM
{{ source(
'silver_crosschain',
'complete_native_prices'
) }}
WHERE
blockchain = 'ethereum'
AND symbol = 'ETH'

View File

@ -0,0 +1,29 @@
{{ config (
materialized = 'view'
) }}
SELECT
asset_id,
token_address,
NAME,
symbol,
platform,
platform_id,
provider,
source,
_inserted_timestamp,
inserted_timestamp,
modified_timestamp,
complete_provider_asset_metadata_id,
_invocation_id
FROM
{{ source(
'silver_crosschain',
'complete_provider_asset_metadata'
) }}
WHERE
platform IN (
'Optimism',
'optimistic-ethereum'
)
-- platforms specific to Optimism

View File

@ -0,0 +1,24 @@
{{ config (
materialized = 'view'
) }}
SELECT
asset_id,
recorded_hour,
OPEN,
high,
low,
CLOSE,
provider,
source,
_inserted_timestamp,
inserted_timestamp,
modified_timestamp,
complete_provider_prices_id,
_invocation_id
FROM
{{ source(
'silver_crosschain',
'complete_provider_prices'
) }}
-- prices for all ids

View File

@ -0,0 +1,28 @@
{{ config (
materialized = 'view'
) }}
SELECT
token_address,
asset_id,
symbol,
NAME,
decimals,
blockchain,
blockchain_name,
blockchain_id,
is_deprecated,
provider,
source,
_inserted_timestamp,
inserted_timestamp,
modified_timestamp,
complete_token_asset_metadata_id,
_invocation_id
FROM
{{ source(
'silver_crosschain',
'complete_token_asset_metadata'
) }}
WHERE
blockchain = 'optimism'

View File

@ -0,0 +1,31 @@
{{ config (
materialized = 'view'
) }}
SELECT
HOUR,
token_address,
asset_id,
symbol,
NAME,
decimals,
price,
blockchain,
blockchain_name,
blockchain_id,
is_imputed,
is_deprecated,
provider,
source,
_inserted_timestamp,
inserted_timestamp,
modified_timestamp,
complete_token_prices_id,
_invocation_id
FROM
{{ source(
'silver_crosschain',
'complete_token_prices'
) }}
WHERE
blockchain = 'optimism'

View File

@ -38,13 +38,11 @@ There is more information on how to use dbt docs in the last section of this doc
- [ez_token_transfers](https://flipsidecrypto.github.io/optimism-models/#!/model/model.optimism_models.core__ez_token_transfers)
- [ez_decoded_event_logs](https://flipsidecrypto.github.io/optimism-models/#!/model/model.optimism_models.core__ez_decoded_event_logs)
### Price Tables (optimism.price)
- [fact_hourly_token_prices](https://flipsidecrypto.github.io/optimism-models/#!/model/model.optimism_models.price__fact_hourly_token_prices)
- [ez_hourly_token_prices](https://flipsidecrypto.github.io/optimism-models/#!/model/model.optimism_models.price__ez_hourly_token_prices)
- [dim_asset_metadata](https://flipsidecrypto.github.io/optimism-models/#!/model/model.optimism_models.price__dim_asset_metadata)
- [fact_prices_ohlc_hourly](https://flipsidecrypto.github.io/optimism-models/#!/model/model.optimism_models.price__fact_prices_ohlc_hourly)
- [ez_asset_metadata](https://flipsidecrypto.github.io/optimism-models/#!/model/model.optimism_models.price__ez_asset_metadata)
- [ez_prices_hourly](https://flipsidecrypto.github.io/optimism-models/#!/model/model.optimism_models.price__ez_prices_hourly)
### DeFi Tables (optimism.defi)
- [ez_bridge_activity](https://flipsidecrypto.github.io/optimism-models/#!/model/model.optimism_models.defi__ez_bridge_activity)
@ -57,7 +55,7 @@ There is more information on how to use dbt docs in the last section of this doc
- [ez_lending_repayments](https://flipsidecrypto.github.io/optimism-models/#!/model/model.optimism_models.defi__ez_lending_repayments)
- [ez_lending_withdraws](https://flipsidecrypto.github.io/optimism-models/#!/model/model.optimism_models.defi__ez_lending_withdraws)
### Stats Tables (ethereum.stats)
### Stats Tables (optimism.stats)
- [ez_core_metrics_hourly](https://flipsidecrypto.github.io/optimism-models/#!/model/model.optimism_models.stats__ez_core_metrics_hourly)
**Velodrome**

View File

@ -0,0 +1,143 @@
{% docs prices_dim_asset_metadata_table_doc %}
A comprehensive dimensional table holding asset metadata and other relevant details pertaining to each id, from multiple providers. This data set includes raw, non-transformed data coming directly from the provider APIs and rows are not intended to be unique. As a result, there may be data quality issues persisting in the APIs that flow through to this dimensional model. If you are interested in using a curated data set instead, please utilize ez_asset_metadata.
{% enddocs %}
{% docs prices_ez_asset_metadata_table_doc %}
A convenience table holding prioritized asset metadata and other relevant details pertaining to each token_address and native asset. This data set is highly curated and contains metadata for one unique asset per blockchain.
{% enddocs %}
{% docs prices_fact_prices_ohlc_hourly_table_doc %}
A comprehensive fact table holding id and provider specific open, high, low, close hourly prices, from multiple providers. This data set includes raw, non-transformed data coming directly from the provider APIs and rows are not intended to be unique. As a result, there may be data quality issues persisting in the APIs that flow through to this fact based model. If you are interested in using a curated data set instead, please utilize ez_prices_hourly.
{% enddocs %}
{% docs prices_ez_prices_hourly_table_doc %}
A convenience table for determining token prices by address and blockchain, and native asset prices by symbol and blockchain. This data set is highly curated and contains metadata for one price per hour per unique asset and blockchain.
{% enddocs %}
{% docs prices_provider %}
The provider or source of the data.
{% enddocs %}
{% docs prices_asset_id %}
The unique identifier representing the asset.
{% enddocs %}
{% docs prices_name %}
The name of asset.
{% enddocs %}
{% docs prices_symbol %}
The symbol of asset.
{% enddocs %}
{% docs prices_token_address %}
The specific address representing the asset on a specific platform. This will be NULL if referring to a native asset.
{% enddocs %}
{% docs prices_token_address_evm %}
The specific address representing the asset on a specific platform. This will be NULL if referring to a native asset. The case (upper / lower) may or may not be specified within the `dim_asset_metadata` table, as this column is raw and not transformed, coming directly from the provider APIs. However, in the `ez_` views, it will be lowercase by default for all EVMs.
{% enddocs %}
{% docs prices_blockchain %}
The Blockchain, Network, or Platform for this asset.
{% enddocs %}
{% docs prices_blockchain_id %}
The unique identifier of the Blockchain, Network, or Platform for this asset.
{% enddocs %}
{% docs prices_decimals %}
The number of decimals for the asset. May be NULL.
{% enddocs %}
{% docs prices_is_native %}
A flag indicating assets native to the respective blockchain.
{% enddocs %}
{% docs prices_is_deprecated %}
A flag indicating if the asset is deprecated or no longer supported by the provider.
{% enddocs %}
{% docs prices_id_deprecation %}
Deprecating soon! Please use the `asset_id` column instead.
{% enddocs %}
{% docs prices_decimals_deprecation %}
Deprecating soon! Please use the decimals column in `ez_asset_metadata` or join in `dim_contracts` instead.
{% enddocs %}
{% docs prices_hour %}
Hour that the price was recorded at.
{% enddocs %}
{% docs prices_price %}
Closing price of the recorded hour in USD.
{% enddocs %}
{% docs prices_is_imputed %}
A flag indicating if the price was imputed, or derived, from the last arriving record. This is generally used for tokens with low-liquidity or inconsistent reporting.
{% enddocs %}
{% docs prices_open %}
Opening price of the recorded hour in USD.
{% enddocs %}
{% docs prices_high %}
Highest price of the recorded hour in USD
{% enddocs %}
{% docs prices_low %}
Lowest price of the recorded hour in USD
{% enddocs %}
{% docs prices_close %}
Closing price of the recorded hour in USD
{% enddocs %}

View File

@ -6,24 +6,22 @@
SELECT
token_address,
id,
symbol,
NAME,
decimals,
asset_id AS id, -- id column pending deprecation
asset_id,
A.symbol,
A.name,
C.decimals, -- decimals column pending deprecation
platform AS blockchain,
platform_id AS blockchain_id,
provider,
COALESCE (
asset_metadata_all_providers_id,
{{ dbt_utils.generate_surrogate_key(
['token_address','symbol','id','provider']
) }}
) AS dim_asset_metadata_id,
COALESCE(
inserted_timestamp,
'2000-01-01'
) AS inserted_timestamp,
COALESCE(
modified_timestamp,
'2000-01-01'
) AS modified_timestamp
A.inserted_timestamp,
A.modified_timestamp,
A.complete_provider_asset_metadata_id AS dim_asset_metadata_id
FROM
{{ ref('silver__asset_metadata_all_providers') }}
{{ ref('silver__complete_provider_asset_metadata') }} A
LEFT JOIN {{ ref('core__dim_contracts') }} C --remove this join alongside decimal column deprecation
ON LOWER(
C.address
) = LOWER(
A.token_address
)

View File

@ -1,28 +1,27 @@
version: 2
models:
- name: price__dim_asset_metadata
description: A comprehensive dimensional table holding all provider asset metadata and other relevant details pertaining to each token_address.
tests:
- dbt_utils.unique_combination_of_columns:
combination_of_columns:
- PROVIDER
- ID
- TOKEN_ADDRESS
- SYMBOL
description: Deprecating soon! Note, only the ID and DECIMALS columns are being removed. The dim_asset_metadata table itself is not being deprecated. '{{ doc("prices_dim_asset_metadata_table_doc") }}'
columns:
- name: PROVIDER
description: The provider or source of the data.
description: '{{ doc("prices_provider")}}'
- name: ID
description: The unique identifier representing the asset.
description: '{{ doc("prices_id_deprecation") }}'
- name: ASSET_ID
description: '{{ doc("prices_asset_id") }}'
- name: NAME
description: The name of asset.
description: '{{ doc("prices_name") }}'
- name: SYMBOL
description: The symbol of asset.
description: '{{ doc("prices_symbol") }}'
- name: TOKEN_ADDRESS
description: The specific address representing the asset in a specific platform.
description: '{{ doc("prices_token_address_evm") }}'
- name: BLOCKCHAIN
description: '{{ doc("prices_blockchain") }}'
- name: BLOCKCHAIN_ID
description: '{{ doc("prices_blockchain_id") }}'
- name: DECIMALS
description: The number of decimal places the token needs adjusted where token values exist.
description: '{{ doc("prices_decimals_deprecation") }}'
- name: DIM_ASSET_METADATA_ID
description: '{{ doc("pk") }}'
- name: INSERTED_TIMESTAMP

View File

@ -6,23 +6,32 @@
SELECT
token_address,
id,
asset_id AS id, -- id column pending deprecation
asset_id,
symbol,
NAME,
decimals,
COALESCE (
asset_metadata_priority_id,
{{ dbt_utils.generate_surrogate_key(
['token_address']
) }}
) AS ez_asset_metadata_id,
COALESCE(
inserted_timestamp,
'2000-01-01'
) AS inserted_timestamp,
COALESCE(
modified_timestamp,
'2000-01-01'
) AS modified_timestamp
blockchain,
FALSE AS is_native,
is_deprecated,
inserted_timestamp,
modified_timestamp,
complete_token_asset_metadata_id AS ez_asset_metadata_id
FROM
{{ ref('silver__asset_metadata_priority') }}
{{ ref('silver__complete_token_asset_metadata') }}
UNION ALL
SELECT
NULL AS token_address,
asset_id AS id, -- id column pending deprecation
asset_id,
symbol,
NAME,
decimals,
blockchain,
TRUE AS is_native,
is_deprecated,
inserted_timestamp,
modified_timestamp,
complete_native_asset_metadata_id AS ez_asset_metadata_id
FROM
{{ ref('silver__complete_native_asset_metadata') }}

View File

@ -1,26 +1,31 @@
version: 2
models:
- name: price__ez_asset_metadata
description: A convenience table holding prioritized asset metadata and other relevant details pertaining to each token_address.
tests:
- dbt_utils.unique_combination_of_columns:
combination_of_columns:
- TOKEN_ADDRESS
description: Deprecating soon! Note, only the ID column is changing. The ez_asset_metadata table itself is not being deprecated. '{{ doc("prices_ez_asset_metadata_table_doc") }}'
columns:
- name: ID
description: The unique identifier representing the asset.
description: '{{ doc("prices_id_deprecation")}}'
- name: ASSET_ID
description: '{{ doc("prices_asset_id") }}'
- name: NAME
description: The name of asset.
description: '{{ doc("prices_name") }}'
- name: SYMBOL
description: The symbol of asset.
description: '{{ doc("prices_symbol") }}'
- name: TOKEN_ADDRESS
description: The specific address representing the asset in a specific platform.
description: '{{ doc("prices_token_address_evm") }}'
- name: BLOCKCHAIN
description: '{{ doc("prices_blockchain") }}'
- name: DECIMALS
description: The number of decimal places the token needs adjusted where token values exist.
description: '{{ doc("prices_decimals") }}'
- name: IS_NATIVE
description: '{{ doc("prices_is_native") }}'
- name: IS_DEPRECATED
description: '{{ doc("prices_is_deprecated") }}'
- name: EZ_ASSET_METADATA_ID
description: '{{ doc("pk") }}'
- name: INSERTED_TIMESTAMP
description: '{{ doc("inserted_timestamp") }}'
- name: MODIFIED_TIMESTAMP
description: '{{ doc("modified_timestamp") }}'
description: '{{ doc("modified_timestamp") }}'

View File

@ -1,29 +1,4 @@
version: 2
models:
- name: price__ez_hourly_token_prices
description: A convenience table for determining token prices by address.
tests:
- dbt_utils.unique_combination_of_columns:
combination_of_columns:
- HOUR
- TOKEN_ADDRESS
columns:
- name: HOUR
description: Hour that the price was recorded at
- name: TOKEN_ADDRESS
description: Address of the token
- name: SYMBOL
description: Symbol of the token
- name: DECIMALS
description: The number of decimals for token contract
- name: PRICE
description: Closing price of the recorded hour in USD
- name: IS_IMPUTED
description: Whether the price was imputed from an earlier record (generally used for low trade volume tokens)
- name: EZ_HOURLY_TOKEN_PRICES_ID
description: '{{ doc("pk") }}'
- name: INSERTED_TIMESTAMP
description: '{{ doc("inserted_timestamp") }}'
- name: MODIFIED_TIMESTAMP
description: '{{ doc("modified_timestamp") }}'
description: Deprecating soon! Please use price.ez_prices_hourly or price.fact_prices_ohlc_hourly instead.

View File

@ -0,0 +1,39 @@
{{ config(
materialized = 'view',
persist_docs ={ "relation": true,
"columns": true }
) }}
SELECT
HOUR,
token_address,
symbol,
NAME,
decimals,
price,
blockchain,
FALSE AS is_native,
is_imputed,
is_deprecated,
inserted_timestamp,
modified_timestamp,
complete_token_prices_id AS ez_prices_hourly_id
FROM
{{ ref('silver__complete_token_prices') }}
UNION ALL
SELECT
HOUR,
NULL AS token_address,
symbol,
NAME,
decimals,
price,
blockchain,
TRUE AS is_native,
is_imputed,
is_deprecated,
inserted_timestamp,
modified_timestamp,
complete_native_prices_id AS ez_prices_hourly_id
FROM
{{ ref('silver__complete_native_prices') }}

View File

@ -0,0 +1,30 @@
version: 2
models:
- name: price__ez_prices_hourly
description: '{{ doc("prices_ez_prices_hourly_table_doc") }}'
columns:
- name: HOUR
description: '{{ doc("prices_hour")}}'
- name: TOKEN_ADDRESS
description: '{{ doc("prices_token_address_evm") }}'
- name: SYMBOL
description: '{{ doc("prices_symbol") }}'
- name: BLOCKCHAIN
description: '{{ doc("prices_blockchain") }}'
- name: DECIMALS
description: '{{ doc("prices_decimals") }}'
- name: PRICE
description: '{{ doc("prices_price") }}'
- name: IS_NATIVE
description: '{{ doc("prices_is_native") }}'
- name: IS_IMPUTED
description: '{{ doc("prices_is_imputed") }}'
- name: IS_DEPRECATED
description: '{{ doc("prices_is_deprecated") }}'
- name: EZ_PRICES_HOURLY_ID
description: '{{ doc("pk") }}'
- name: INSERTED_TIMESTAMP
description: '{{ doc("inserted_timestamp") }}'
- name: MODIFIED_TIMESTAMP
description: '{{ doc("modified_timestamp") }}'

View File

@ -1,22 +1,4 @@
version: 2
models:
- name: price__fact_hourly_token_prices
description: A comprehensive fact table holding provider specific hourly token prices.
columns:
- name: HOUR
description: Hour that the price was recorded at
- name: TOKEN_ADDRESS
description: Address of the token
- name: PROVIDER
description: Source of the token price.
- name: PRICE
description: Closing price of the recorded hour in USD
- name: IS_IMPUTED
description: Whether the price was imputed from an earlier record (generally used for low trade volume tokens)
- name: FACT_HOURLY_TOKEN_PRICES_ID
description: '{{ doc("pk") }}'
- name: INSERTED_TIMESTAMP
description: '{{ doc("inserted_timestamp") }}'
- name: MODIFIED_TIMESTAMP
description: '{{ doc("modified_timestamp") }}'
description: Deprecating soon! Please use price.ez_prices_hourly or price.fact_prices_ohlc_hourly instead.

View File

@ -0,0 +1,19 @@
{{ config(
materialized = 'view',
persist_docs ={ "relation": true,
"columns": true }
) }}
SELECT
asset_id,
recorded_hour AS HOUR,
OPEN,
high,
low,
CLOSE,
provider,
inserted_timestamp,
modified_timestamp,
complete_provider_prices_id AS fact_prices_ohlc_hourly_id
FROM
{{ ref('silver__complete_provider_prices') }}

View File

@ -0,0 +1,24 @@
version: 2
models:
- name: price__fact_prices_ohlc_hourly
description: '{{ doc("prices_fact_prices_ohlc_hourly_table_doc") }}'
columns:
- name: HOUR
description: '{{ doc("prices_hour")}}'
- name: ASSET_ID
description: '{{ doc("prices_asset_id") }}'
- name: OPEN
description: '{{ doc("prices_open") }}'
- name: HIGH
description: '{{ doc("prices_high") }}'
- name: LOW
description: '{{ doc("prices_low") }}'
- name: CLOSE
description: '{{ doc("prices_close") }}'
- name: FACT_PRICES_OHLC_HOURLY_ID
description: '{{ doc("pk") }}'
- name: INSERTED_TIMESTAMP
description: '{{ doc("inserted_timestamp") }}'
- name: MODIFIED_TIMESTAMP
description: '{{ doc("modified_timestamp") }}'

View File

@ -126,7 +126,7 @@ FROM
base
LEFT JOIN tokens t
ON t.token_address = base.token_address
LEFT JOIN {{ ref('price__ez_hourly_token_prices') }}
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
prices
ON HOUR = DATE_TRUNC(
'hour',

View File

@ -112,14 +112,14 @@ FROM
) = LOWER(
pools.pool_address
)
LEFT JOIN {{ ref('price__ez_hourly_token_prices') }}
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
p0
ON p0.hour = DATE_TRUNC(
'hour',
block_timestamp
)
AND token0_address = p0.token_address
LEFT JOIN {{ ref('price__ez_hourly_token_prices') }}
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
p1
ON p1.hour = DATE_TRUNC(
'hour',

View File

@ -225,7 +225,7 @@ FROM
)
LEFT JOIN tokens
ON tokens.token_address = fee_currency
LEFT JOIN {{ ref('price__ez_hourly_token_prices') }}
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
p0
ON p0.hour = DATE_TRUNC(
'hour',
@ -235,7 +235,7 @@ FROM
WHEN amount0_in_unadj <> 0 THEN token0_address
WHEN amount1_in_unadj <> 0 THEN token1_address
END
LEFT JOIN {{ ref('price__ez_hourly_token_prices') }}
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
p1
ON p1.hour = DATE_TRUNC(
'hour',
@ -245,7 +245,7 @@ FROM
WHEN amount0_out_unadj <> 0 THEN token0_address
WHEN amount1_out_unadj <> 0 THEN token1_address
END
LEFT JOIN {{ ref('price__ez_hourly_token_prices') }}
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
p2
ON p2.hour = DATE_TRUNC(
'hour',

View File

@ -59,7 +59,7 @@ SELECT
) AS modified_timestamp
FROM
{{ ref('silver__velodrome_locks') }} l
LEFT JOIN {{ ref('price__ez_hourly_token_prices') }}
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
prices
ON HOUR = DATE_TRUNC(
'hour',

View File

@ -32,6 +32,7 @@ SELECT
FROM
{{ ref('silver_stats__core_metrics_hourly') }}
s
LEFT JOIN {{ ref('silver__hourly_prices_priority_eth') }}
LEFT JOIN {{ ref('silver__complete_token_prices') }}
p
ON s.block_timestamp_hour = p.hour
ON s.block_timestamp_hour = p.hour
AND p.token_address = '0x4200000000000000000000000000000000000006'

View File

@ -98,11 +98,13 @@ SELECT
'{{ invocation_id }}' AS _invocation_id
FROM
eth_base A
LEFT JOIN {{ ref('silver__hourly_prices_priority_eth') }}
LEFT JOIN {{ ref('silver__complete_token_prices') }}
p
ON DATE_TRUNC(
'hour',
A.block_timestamp
) = HOUR
AND p.token_address = '0x4200000000000000000000000000000000000006'
JOIN tx_table USING (
tx_hash,
block_number

View File

@ -1,4 +1,4 @@
-- depends_on: {{ ref('silver__hourly_prices_priority') }}
-- depends_on: {{ ref('silver__complete_token_prices') }}
{{ config(
materialized = 'incremental',
incremental_strategy = 'delete+insert',
@ -85,7 +85,7 @@ token_transfers AS (
_inserted_timestamp
FROM
logs t
LEFT JOIN {{ ref('price__ez_hourly_token_prices') }}
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
p
ON t.contract_address = p.token_address
AND DATE_TRUNC(
@ -147,7 +147,7 @@ heal_model AS (
FROM
{{ this }}
t0
LEFT JOIN {{ ref('price__ez_hourly_token_prices') }}
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
p
ON t0.contract_address = p.token_address
AND DATE_TRUNC(
@ -203,7 +203,7 @@ heal_model AS (
SELECT
1
FROM
{{ ref('silver__hourly_prices_priority') }}
{{ ref('silver__complete_token_prices') }}
p
WHERE
p._inserted_timestamp > DATEADD('DAY', -14, SYSDATE())

View File

@ -646,7 +646,7 @@ FINAL AS (
all_protocols b
LEFT JOIN {{ ref('silver__contracts') }} C
ON b.token_address = C.contract_address
LEFT JOIN {{ ref('price__ez_hourly_token_prices') }}
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
p
ON b.token_address = p.token_address
AND DATE_TRUNC(

View File

@ -22,7 +22,7 @@ prices AS (
token_address,
price
FROM
{{ ref('price__ez_hourly_token_prices') }}
{{ ref('price__ez_prices_hourly') }}
WHERE
token_address IN (
SELECT

View File

@ -230,12 +230,12 @@ FINAL AS (
2
) AS amount_usd,
platform,
blockchain,
b.blockchain,
b._LOG_ID,
b._INSERTED_TIMESTAMP
FROM
borrow_union b
LEFT JOIN {{ ref('price__ez_hourly_token_prices') }}
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
p
ON b.token_address = p.token_address
AND DATE_TRUNC(

View File

@ -227,12 +227,12 @@ FINAL AS (
2
) AS amount_usd,
platform,
blockchain,
A.blockchain,
A._LOG_ID,
A._INSERTED_TIMESTAMP
FROM
deposit_union A
LEFT JOIN {{ ref('price__ez_hourly_token_prices') }}
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
p
ON A.token_address = p.token_address
AND DATE_TRUNC(

View File

@ -122,12 +122,12 @@ FINAL AS (
2
) AS premium_amount_usd,
platform,
blockchain,
f.blockchain,
f._LOG_ID,
f._INSERTED_TIMESTAMP
FROM
flashloan_union f
LEFT JOIN {{ ref('price__ez_hourly_token_prices') }}
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
p
ON f.token_address = p.token_address
AND DATE_TRUNC(

View File

@ -243,7 +243,7 @@ prices AS (
SELECT
*
FROM
{{ ref('price__ez_hourly_token_prices') }}
{{ ref('price__ez_prices_hourly') }}
p
WHERE
token_address IN (

View File

@ -236,12 +236,12 @@ FINAL AS (
2
) AS amount_usd,
platform,
blockchain,
A.blockchain,
A._LOG_ID,
A._INSERTED_TIMESTAMP
FROM
repayments_union A
LEFT JOIN {{ ref('price__ez_hourly_token_prices') }}
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
p
ON A.token_address = p.token_address
AND DATE_TRUNC(

View File

@ -243,12 +243,12 @@ FINAL AS (
2
) AS amount_usd,
platform,
blockchain,
A.blockchain,
A._log_id,
A._inserted_timestamp
FROM
withdraws_union A
LEFT JOIN {{ ref('price__ez_hourly_token_prices') }}
LEFT JOIN {{ ref('price__ez_prices_hourly') }}
p
ON A.token_address = p.token_address
AND DATE_TRUNC(

View File

@ -268,7 +268,7 @@ prices_raw AS (
decimals,
price AS hourly_prices
FROM
{{ ref('price__ez_hourly_token_prices') }}
{{ ref('price__ez_prices_hourly') }}
WHERE
token_address IN (
SELECT

View File

@ -0,0 +1,37 @@
{{ config(
materialized = 'incremental',
incremental_strategy = 'delete+insert',
unique_key = 'complete_native_asset_metadata_id',
tags = ['non_realtime']
) }}
SELECT
asset_id,
symbol,
NAME,
decimals,
blockchain,
is_deprecated,
provider,
source,
_inserted_timestamp,
inserted_timestamp,
modified_timestamp,
complete_native_asset_metadata_id,
_invocation_id
FROM
{{ ref(
'bronze__complete_native_asset_metadata'
) }}
{% if is_incremental() %}
WHERE
modified_timestamp >= (
SELECT
MAX(
modified_timestamp
)
FROM
{{ this }}
)
{% endif %}

View File

@ -0,0 +1,24 @@
version: 2
models:
- name: silver__complete_native_asset_metadata
tests:
- dbt_utils.unique_combination_of_columns:
combination_of_columns:
- SYMBOL
columns:
- name: PROVIDER
tests:
- not_null
- name: SYMBOL
tests:
- not_null
- name: BLOCKCHAIN
tests:
- not_null
- name: MODIFIED_TIMESTAMP
tests:
- not_null
- name: COMPLETE_NATIVE_ASSET_METADATA_ID
tests:
- unique

View File

@ -0,0 +1,40 @@
{{ config(
materialized = 'incremental',
incremental_strategy = 'delete+insert',
unique_key = 'complete_native_prices_id',
tags = ['non_realtime']
) }}
SELECT
HOUR,
asset_id,
symbol,
NAME,
decimals,
price,
blockchain,
is_imputed,
is_deprecated,
provider,
source,
_inserted_timestamp,
inserted_timestamp,
modified_timestamp,
complete_native_prices_id,
_invocation_id
FROM
{{ ref(
'bronze__complete_native_prices'
) }}
{% if is_incremental() %}
WHERE
modified_timestamp >= (
SELECT
MAX(
modified_timestamp
)
FROM
{{ this }}
)
{% endif %}

View File

@ -0,0 +1,37 @@
version: 2
models:
- name: silver__complete_native_prices
tests:
- dbt_utils.unique_combination_of_columns:
combination_of_columns:
- HOUR
- SYMBOL
columns:
- name: HOUR
tests:
- not_null
- name: SYMBOL
tests:
- not_null
- name: BLOCKCHAIN
tests:
- not_null
- name: PROVIDER
tests:
- not_null
- name: PRICE
tests:
- not_null
- name: IS_IMPUTED
tests:
- not_null
- name: _INSERTED_TIMESTAMP
tests:
- not_null
- name: MODIFIED_TIMESTAMP
tests:
- not_null
- name: COMPLETE_NATIVE_PRICES_ID
tests:
- unique

View File

@ -0,0 +1,37 @@
{{ config(
materialized = 'incremental',
incremental_strategy = 'delete+insert',
unique_key = 'complete_provider_asset_metadata_id',
tags = ['non_realtime']
) }}
SELECT
asset_id,
token_address,
NAME,
symbol,
platform,
platform_id,
provider,
source,
_inserted_timestamp,
inserted_timestamp,
modified_timestamp,
complete_provider_asset_metadata_id,
_invocation_id
FROM
{{ ref(
'bronze__complete_provider_asset_metadata'
) }}
{% if is_incremental() %}
WHERE
modified_timestamp >= (
SELECT
MAX(
modified_timestamp
)
FROM
{{ this }}
)
{% endif %}

View File

@ -0,0 +1,26 @@
version: 2
models:
- name: silver__complete_provider_asset_metadata
tests:
- dbt_utils.unique_combination_of_columns:
combination_of_columns:
- ASSET_ID
- TOKEN_ADDRESS
- NAME
- SYMBOL
- PLATFORM
- PLATFORM_ID
- PROVIDER
columns:
- name: PROVIDER
tests:
- not_null
- name: ASSET_ID
tests:
- not_null
- name: MODIFIED_TIMESTAMP
tests:
- not_null
- name: COMPLETE_PROVIDER_ASSET_METADATA_ID
tests:
- unique

View File

@ -0,0 +1,45 @@
{{ config(
materialized = 'incremental',
incremental_strategy = 'delete+insert',
unique_key = 'complete_provider_prices_id',
tags = ['non_realtime']
) }}
SELECT
p.asset_id,
recorded_hour,
OPEN,
high,
low,
CLOSE,
p.provider,
p.source,
p._inserted_timestamp,
p.inserted_timestamp,
p.modified_timestamp,
p.complete_provider_prices_id,
p._invocation_id
FROM
{{ ref(
'bronze__complete_provider_prices'
) }}
p
INNER JOIN {{ ref('bronze__complete_provider_asset_metadata') }}
m
ON p.asset_id = m.asset_id
{% if is_incremental() %}
WHERE
p.modified_timestamp >= (
SELECT
MAX(
modified_timestamp
)
FROM
{{ this }}
)
{% endif %}
qualify(ROW_NUMBER() over (PARTITION BY p.asset_id, recorded_hour, p.provider
ORDER BY
p.modified_timestamp DESC)) = 1

View File

@ -0,0 +1,25 @@
version: 2
models:
- name: silver__complete_provider_prices
tests:
- dbt_utils.unique_combination_of_columns:
combination_of_columns:
- ASSET_ID
- RECORDED_HOUR
- PROVIDER
columns:
- name: PROVIDER
tests:
- not_null
- name: ASSET_ID
tests:
- not_null
- name: RECORDED_HOUR
tests:
- not_null
- name: MODIFIED_TIMESTAMP
tests:
- not_null
- name: COMPLETE_PROVIDER_PRICES_ID
tests:
- unique

View File

@ -0,0 +1,42 @@
{{ config(
materialized = 'incremental',
incremental_strategy = 'delete+insert',
unique_key = 'complete_token_asset_metadata_id',
tags = ['non_realtime']
) }}
SELECT
LOWER(
A.token_address
) AS token_address,
asset_id,
symbol,
NAME,
decimals,
blockchain,
blockchain_name,
blockchain_id,
is_deprecated,
provider,
source,
_inserted_timestamp,
inserted_timestamp,
modified_timestamp,
complete_token_asset_metadata_id,
_invocation_id
FROM
{{ ref(
'bronze__complete_token_asset_metadata'
) }} A
{% if is_incremental() %}
WHERE
modified_timestamp >= (
SELECT
MAX(
modified_timestamp
)
FROM
{{ this }}
)
{% endif %}

View File

@ -0,0 +1,28 @@
version: 2
models:
- name: silver__complete_token_asset_metadata
tests:
- dbt_utils.unique_combination_of_columns:
combination_of_columns:
- TOKEN_ADDRESS
- BLOCKCHAIN
columns:
- name: PROVIDER
tests:
- not_null
- name: TOKEN_ADDRESS
tests:
- not_null
- name: BLOCKCHAIN
tests:
- not_null
- name: BLOCKCHAIN_ID
tests:
- not_null
- name: MODIFIED_TIMESTAMP
tests:
- not_null
- name: COMPLETE_TOKEN_ASSET_METADATA_ID
tests:
- unique

View File

@ -0,0 +1,46 @@
{{ config(
materialized = 'incremental',
incremental_strategy = 'delete+insert',
unique_key = 'complete_token_prices_id',
tags = ['non_realtime']
) }}
SELECT
HOUR,
LOWER(
p.token_address
) AS token_address,
asset_id,
symbol,
NAME,
decimals,
price,
blockchain,
blockchain_name,
blockchain_id,
is_imputed,
is_deprecated,
provider,
source,
_inserted_timestamp,
inserted_timestamp,
modified_timestamp,
complete_token_prices_id,
_invocation_id
FROM
{{ ref(
'bronze__complete_token_prices'
) }}
p
{% if is_incremental() %}
WHERE
modified_timestamp >= (
SELECT
MAX(
modified_timestamp
)
FROM
{{ this }}
)
{% endif %}

View File

@ -0,0 +1,41 @@
version: 2
models:
- name: silver__complete_token_prices
tests:
- dbt_utils.unique_combination_of_columns:
combination_of_columns:
- HOUR
- TOKEN_ADDRESS
- BLOCKCHAIN
columns:
- name: HOUR
tests:
- not_null
- name: TOKEN_ADDRESS
tests:
- not_null
- name: BLOCKCHAIN
tests:
- not_null
- name: BLOCKCHAIN_ID
tests:
- not_null
- name: PROVIDER
tests:
- not_null
- name: PRICE
tests:
- not_null
- name: IS_IMPUTED
tests:
- not_null
- name: _INSERTED_TIMESTAMP
tests:
- not_null
- name: MODIFIED_TIMESTAMP
tests:
- not_null
- name: COMPLETE_TOKEN_PRICES_ID
tests:
- unique

View File

@ -34,6 +34,12 @@ sources:
- name: asset_metadata_all_providers
- name: near_address_encoded
- name: labels_combined
- name: complete_token_asset_metadata
- name: complete_token_prices
- name: complete_provider_asset_metadata
- name: complete_provider_prices
- name: complete_native_asset_metadata
- name: complete_native_prices
- name: crosschain_public
database: crosschain
schema: bronze_public