mirror of
https://github.com/FlipsideCrypto/optimism-models.git
synced 2026-02-06 16:01:54 +00:00
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:
parent
14088c4299
commit
010b62b672
@ -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'
|
||||
29
models/bronze/prices/bronze__complete_native_prices.sql
Normal file
29
models/bronze/prices/bronze__complete_native_prices.sql
Normal 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'
|
||||
@ -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
|
||||
24
models/bronze/prices/bronze__complete_provider_prices.sql
Normal file
24
models/bronze/prices/bronze__complete_provider_prices.sql
Normal 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
|
||||
@ -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'
|
||||
31
models/bronze/prices/bronze__complete_token_prices.sql
Normal file
31
models/bronze/prices/bronze__complete_token_prices.sql
Normal 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'
|
||||
@ -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**
|
||||
|
||||
143
models/doc_descriptions/prices/prices.md
Normal file
143
models/doc_descriptions/prices/prices.md
Normal 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 %}
|
||||
@ -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
|
||||
)
|
||||
@ -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
|
||||
|
||||
@ -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') }}
|
||||
|
||||
@ -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") }}'
|
||||
|
||||
@ -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.
|
||||
39
models/gold/price/price__ez_prices_hourly.sql
Normal file
39
models/gold/price/price__ez_prices_hourly.sql
Normal 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') }}
|
||||
30
models/gold/price/price__ez_prices_hourly.yml
Normal file
30
models/gold/price/price__ez_prices_hourly.yml
Normal 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") }}'
|
||||
@ -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.
|
||||
19
models/gold/price/price__fact_prices_ohlc_hourly.sql
Normal file
19
models/gold/price/price__fact_prices_ohlc_hourly.sql
Normal 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') }}
|
||||
24
models/gold/price/price__fact_prices_ohlc_hourly.yml
Normal file
24
models/gold/price/price__fact_prices_ohlc_hourly.yml
Normal 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") }}'
|
||||
@ -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',
|
||||
|
||||
@ -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',
|
||||
|
||||
@ -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',
|
||||
|
||||
@ -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',
|
||||
|
||||
@ -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'
|
||||
@ -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
|
||||
|
||||
@ -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())
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -243,7 +243,7 @@ prices AS (
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
{{ ref('price__ez_hourly_token_prices') }}
|
||||
{{ ref('price__ez_prices_hourly') }}
|
||||
p
|
||||
WHERE
|
||||
token_address IN (
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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 %}
|
||||
@ -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
|
||||
40
models/silver/prices/silver__complete_native_prices.sql
Normal file
40
models/silver/prices/silver__complete_native_prices.sql
Normal 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 %}
|
||||
37
models/silver/prices/silver__complete_native_prices.yml
Normal file
37
models/silver/prices/silver__complete_native_prices.yml
Normal 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
|
||||
@ -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 %}
|
||||
@ -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
|
||||
45
models/silver/prices/silver__complete_provider_prices.sql
Normal file
45
models/silver/prices/silver__complete_provider_prices.sql
Normal 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
|
||||
25
models/silver/prices/silver__complete_provider_prices.yml
Normal file
25
models/silver/prices/silver__complete_provider_prices.yml
Normal 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
|
||||
@ -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 %}
|
||||
@ -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
|
||||
46
models/silver/prices/silver__complete_token_prices.sql
Normal file
46
models/silver/prices/silver__complete_token_prices.sql
Normal 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 %}
|
||||
41
models/silver/prices/silver__complete_token_prices.yml
Normal file
41
models/silver/prices/silver__complete_token_prices.yml
Normal 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
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user