Skip to content
Merged
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
2 changes: 1 addition & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@ SNOWFLAKE_WAREHOUSE=
SNOWFLAKE_DATABASE=
SNOWFLAKE_SCHEMA=
# Path to the private key file (.p8 or .pem) - used by dev/prod targets
SNOWFLAKE_PRIVATE_KEY_FILE=/path/to/your/snowflake_key.p8
SNOWFLAKE_PRIVATE_KEY_PATH=/path/to/your/snowflake_key.p8
# Private key content (PEM format with newlines) - used by test target and CI
# SNOWFLAKE_PRIVATE_KEY=
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ Required variables (see [.env.example](.env.example)):
Optional (for Snowflake):
- `SNOWFLAKE_ACCOUNT`, `SNOWFLAKE_USER`, `SNOWFLAKE_ROLE`, `SNOWFLAKE_WAREHOUSE`
- `SNOWFLAKE_DATABASE`, `SNOWFLAKE_SCHEMA`
- `SNOWFLAKE_PRIVATE_KEY_FILE`: Path to private key file (.p8 or .pem) for local development
- `SNOWFLAKE_PRIVATE_KEY_PATH`: Path to private key file (.p8 or .pem) for local development

## Key Data Flows

Expand Down
14 changes: 8 additions & 6 deletions dbt_project/models/03_mart/fct_transfer.sql
Original file line number Diff line number Diff line change
Expand Up @@ -93,20 +93,22 @@ enriched as (

select
transaction_hash,
log_index,
-- log_index,
date_key,
block_number,
block_timestamp,
-- block_number,
contract_address,
chain,
from_address,
to_address,
symbol,
name,
decimals,
transaction_type,
-- symbol,
-- name,
-- decimals,
amount,

-- Calculations last (ST06: simple targets before calculations)
CONVERT_TIMEZONE('UTC', block_timestamp) as block_timestamp,

-- Audit column to track incremental runs
CONVERT_TIMEZONE('UTC', CURRENT_TIMESTAMP()) as dbt_loaded_at
from enriched
40 changes: 16 additions & 24 deletions dbt_project/models/03_mart/models.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,26 +40,18 @@ models:
description: "Ethereum transaction hash"
tests:
- not_null
- name: log_index
description: "Log index within the transaction"
tests:
- not_null
- name: date_key
description: "Date dimension key in YYYYMMDD format"
tests:
- not_null
- name: block_number
description: "Block number where transfer occurred"
tests:
- not_null
- name: block_timestamp
description: "Block timestamp in UTC"
tests:
- not_null
- name: contract_address
description: "Token contract address"
tests:
- not_null
- name: chain
description: "Blockchain identifier (currently 'ethereum')"
tests:
- not_null
- name: from_address
description: "Sender address (0x0 for mints)"
tests:
Expand All @@ -68,22 +60,22 @@ models:
description: "Recipient address (0x0 for burns)"
tests:
- not_null
- name: amount_raw
description: "Transfer amount in smallest unit (before decimal adjustment)"
- name: amount
description: "Transfer amount adjusted for decimals (assuming 6 decimals)"
- name: usd_value
description: "Approximate USD value (for stablecoins)"
- name: transaction_type
description: "Type of transaction: transfer, mint, or burn"
tests:
- not_null
- accepted_values:
arguments:
values: ["transfer", "mint", "burn"]
# tests:
# - dbt_utils.unique_combination_of_columns:
# arguments:
# combination_of_columns:
# - transaction_hash
# - log_index
- name: amount
description: "Transfer amount adjusted for token decimals"
tests:
- not_null
- name: block_timestamp
description: "Block timestamp in UTC"
tests:
- not_null
- name: dbt_loaded_at
description: "Timestamp when record was loaded by dbt"
tests:
- not_null
4 changes: 2 additions & 2 deletions dbt_project/profiles.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ stables_analytics:
type: snowflake
account: "{{ env_var('SNOWFLAKE_ACCOUNT') }}"
user: "{{ env_var('SNOWFLAKE_USER') }}"
private_key_file: "{{ env_var('SNOWFLAKE_PRIVATE_KEY_FILE') }}"
private_key_path: "{{ env_var('SNOWFLAKE_PRIVATE_KEY_PATH') }}"
role: "{{ env_var('SNOWFLAKE_ROLE') }}"
database: "{{ env_var('SNOWFLAKE_DATABASE') }}"
warehouse: "{{ env_var('SNOWFLAKE_WAREHOUSE') }}"
Expand All @@ -37,7 +37,7 @@ stables_analytics:
type: snowflake
account: "{{ env_var('SNOWFLAKE_ACCOUNT') }}"
user: "{{ env_var('SNOWFLAKE_USER') }}"
private_key_file: "{{ env_var('SNOWFLAKE_PRIVATE_KEY_FILE') }}"
private_key_path: "{{ env_var('SNOWFLAKE_PRIVATE_KEY_PATH') }}"
role: "{{ env_var('SNOWFLAKE_ROLE') }}"
database: "{{ env_var('SNOWFLAKE_DATABASE') }}"
warehouse: "{{ env_var('SNOWFLAKE_WAREHOUSE') }}"
Expand Down
2 changes: 1 addition & 1 deletion dbt_project/tests/test_block_number_range.sql
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
-- Test that block numbers are within expected range

select block_number
from {{ ref('fct_transfer') }}
from {{ ref('stg_transfer') }}
where
block_number < 0
or block_number > 999999999 -- reasonable upper bound
Loading