Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions models/sources.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ sources:
- name: hours
- name: udm_address_labels
- name: udm_address_labels_new
- name: udm_events_terra
- name: udm_address_tags
- name: udm_balances
- name: udm_decimal_adjustments
Expand Down
17 changes: 17 additions & 0 deletions models/terra/gold/gold_terra__address_labels.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{{ config(
materialized = 'incremental',
unique_key = 'blockchain || address',
incremental_strategy = 'delete+insert',
cluster_by = ['address'],
tags = ['snowflake', 'terra_gold', 'terra_address_labels']
) }}

SELECT
*
FROM
{{ source(
'shared',
'udm_address_labels_new'
) }}
WHERE
blockchain = 'terra'
24 changes: 24 additions & 0 deletions models/terra/gold/gold_terra__address_tags.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{{ config(
materialized = 'incremental',
unique_key = 'blockchain || address',
incremental_strategy = 'delete+insert',
cluster_by = ['blockchain'],
tags = ['snowflake', 'terra_gold', 'terra_address_tags']
) }}

SELECT
blockchain,
address,
tag_name,
tag_type,
tag_slug,
source,
start_date,
end_date
FROM
{{ source(
'shared',
'udm_address_tags'
) }}
WHERE
blockchain = 'terra'
58 changes: 58 additions & 0 deletions models/terra/gold/gold_terra__daily_balances.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
{{ config(
materialized = 'incremental',
sort = ['date', 'currency'],
unique_key = 'date',
tags = ['snowflake', 'terra_gold', 'terra_daily_balances']
) }}

WITH prices AS (

SELECT
p.symbol,
DATE_TRUNC(
'day',
HOUR
) AS DAY,
AVG(price) AS price
FROM
{{ ref('gold_terra__prices') }}
p
WHERE
TRUE

{% if is_incremental() %}
AND HOUR >= getdate() - INTERVAL '3 days'
{% endif %}
GROUP BY
p.symbol,
DAY
)
SELECT
DATE,
b.address,
address_labels.l1_label AS address_label_type,
address_labels.l2_label AS address_label_subtype,
address_labels.project_name AS address_label,
address_labels.address_name AS address_address_name,
balance,
balance * p.price AS balance_usd,
b.balance_type,
currency
FROM
{{ source(
'terra',
'udm_daily_balances_terra'
) }}
b
LEFT OUTER JOIN prices p
ON p.symbol = b.currency
AND p.day = b.date
LEFT OUTER JOIN {{ ref('gold_terra__address_labels') }}
address_labels
ON b.address = address_labels.address
WHERE
TRUE

{% if is_incremental() %}
AND DATE >= getdate() - INTERVAL '3 days'
{% endif %}
17 changes: 17 additions & 0 deletions models/terra/gold/gold_terra__decimals.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{{ config(
materialized = 'incremental',
unique_key = 'blockchain || asset_id',
incremental_strategy = 'delete+insert',
cluster_by = ['blockchain'],
tags = ['snowflake', 'terra_gold', 'terra_decimals']
) }}

SELECT
*
FROM
{{ source(
'shared',
'udm_decimal_adjustments'
) }}
WHERE
blockchain = 'terra'
76 changes: 76 additions & 0 deletions models/terra/gold/gold_terra__events.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
{{ config(
materialized = 'incremental',
sort = 'block_timestamp',
unique_key = 'block_timestamp',
tags = ['snowflake', 'terra_gold', 'terra_events']
) }}

SELECT
e.blockchain,
block_timestamp,
block_id AS block_number,
tx_id,
tx_from,
tx_from_labels.l1_label AS tx_from_label_type,
tx_from_labels.l2_label AS tx_from_label_subtype,
tx_from_labels.project_name AS tx_from_label,
tx_from_labels.address_name AS tx_from_address_name,
tx_to,
tx_to_labels.l1_label AS tx_to_label_type,
tx_to_labels.l2_label AS tx_to_label_subtype,
tx_to_labels.project_name AS tx_to_label,
tx_to_labels.address_name AS tx_to_address_name,
tx_type,
tx_fee,
tx_fee * fee_price.price AS tx_fee_usd,
event_from,
event_from_labels.l1_label AS event_from_label_type,
event_from_labels.l2_label AS event_from_label_subtype,
event_from_labels.project_name AS event_from_label,
event_from_labels.address_name AS event_from_address_name,
event_to,
event_to_labels.l1_label AS event_to_label_type,
event_to_labels.l2_label AS event_to_label_subtype,
event_to_labels.project_name AS event_to_label,
event_to_labels.address_name AS event_to_address_name,
event_type,
event_amount,
event_amount * event_price.price AS event_amount_usd,
event_currency
FROM
{{ source(
'shared',
'udm_events_terra'
) }}
e
LEFT OUTER JOIN {{ ref('gold_terra__address_labels') }} AS tx_from_labels
ON e.tx_from = tx_from_labels.address
LEFT OUTER JOIN {{ ref('gold_terra__address_labels') }} AS tx_to_labels
ON e.tx_to = tx_to_labels.address
LEFT OUTER JOIN {{ ref('gold_terra__address_labels') }} AS event_from_labels
ON e.event_from = event_from_labels.address
LEFT OUTER JOIN {{ ref('gold_terra__address_labels') }} AS event_to_labels
ON e.event_to = event_to_labels.address
LEFT OUTER JOIN {{ ref('gold_terra__prices') }}
fee_price
ON fee_price.hour = DATE_TRUNC(
'hour',
block_timestamp
)
AND fee_price.symbol = COALESCE(
e.event_currency,
'LUNA'
)
LEFT OUTER JOIN {{ ref('gold_terra__prices') }}
event_price
ON event_price.hour = DATE_TRUNC(
'hour',
block_timestamp
)
AND event_price.symbol = e.event_currency
WHERE
TRUE

{% if is_incremental() %}
AND block_timestamp >= getdate() - INTERVAL '3 days'
{% endif %}
104 changes: 104 additions & 0 deletions models/terra/gold/gold_terra__prices.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
{{ config(
materialized = 'incremental',
unique_key = 'symbol || hour',
incremental_strategy = 'delete+insert',
cluster_by = ['hour'],
tags = ['snowflake', 'terra_gold', 'terra_prices']
) }}

WITH hours AS (

SELECT
HOUR
FROM
{{ source(
'shared',
'hours'
) }}
WHERE
TRUE

{% if is_incremental() %}
AND HOUR >= getdate() - INTERVAL '3 days'
AND HOUR < getdate() + INTERVAL '1 day'
{% endif %}
),
raw_prices AS (
SELECT
symbol,
DATE_TRUNC(
'hour',
recorded_at
) AS HOUR,
AVG(price) AS price
FROM
{{ source(
'shared',
'prices'
) }}
WHERE
asset_id IN (
4172,
-- Luna
5115,
-- Terra KRW (KRT)
6370 -- Terra SDT (SDR)
)

{% if is_incremental() %}
AND recorded_at >= getdate() - INTERVAL '3 days'
{% endif %}
AND recorded_at < getdate() + INTERVAL '1 day'
GROUP BY
symbol,
HOUR
UNION ALL
SELECT
symbol,
DATE_TRUNC(
'hour',
recorded_at
) AS HOUR,
AVG(price) AS price
FROM
{{ source(
'shared',
'coingecko_prices'
) }}
WHERE
asset_id IN ('terrausd')

{% if is_incremental() %}
AND recorded_at >= getdate() - INTERVAL '3 days'
{% endif %}
AND recorded_at < getdate() + INTERVAL '1 day'
GROUP BY
symbol,
HOUR
),
assets AS (
SELECT
symbol
FROM
raw_prices
GROUP BY
1
),
hour_assets AS (
SELECT
h.hour,
A.symbol
FROM
hours h
CROSS JOIN assets A
)
SELECT
ha.hour,
ha.symbol,
-- use price if we have other, otherwise fall back to daily average
COALESCE(rp.price, AVG(rp.price) over(PARTITION BY DATE_TRUNC('day', ha.hour), ha.symbol)) AS price
FROM
hour_assets ha
LEFT OUTER JOIN raw_prices rp
ON ha.symbol = rp.symbol
AND ha.hour = rp.hour
24 changes: 24 additions & 0 deletions models/terra/gold/gold_terra__tax_rate.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{{ config(
materialized = 'incremental',
unique_key = 'blockchain || block_number',
incremental_strategy = 'delete+insert',
cluster_by = ['blockchain', 'block_number'],
tags = ['snowflake', 'terra_gold', 'terra_tax_rate']
) }}

SELECT
blockchain,
block_timestamp,
block_number,
tax_rate
FROM
{{ source(
'terra',
'udm_custom_fields_terra_tax_rate'
) }}
WHERE
TRUE

{% if is_incremental() %}
AND block_timestamp >= getdate() - INTERVAL '3 days'
{% endif %}
27 changes: 27 additions & 0 deletions models/terra/gold/gold_terra__velocity.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{{ config(
materialized = 'incremental',
unique_key = 'start_Date',
incremental_strategy = 'delete+insert',
cluster_by = ['start_date'],
tags = ['snowflake', 'terra_gold', 'terra_velocity']
) }}
{{ config(
materialized = 'table',
sort = 'start_date',
tags = ['custom']
) }}

SELECT
blockchain,
start_date,
end_date,
currency,
metric,
VALUE
FROM
{{ source(
'shared',
'udm_velocity'
) }}
WHERE
blockchain = 'terra'
25 changes: 25 additions & 0 deletions models/terra/gold/gold_terra__voting_power.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{{ config(
materialized = 'incremental',
unique_key = 'blockchain || address',
incremental_strategy = 'delete+insert',
cluster_by = ['block_number', 'block_timestamp'],
tags = ['snowflake', 'terra_gold', 'terra_voting_power']
) }}

SELECT
blockchain,
block_timestamp,
block_number,
address,
voting_power
FROM
{{ source(
'terra',
'terra_validator_voting_power'
) }}
WHERE
TRUE

{% if is_incremental() %}
AND block_timestamp >= getdate() - INTERVAL '3 days'
{% endif %}