solana.core Table: fact_token_account_owners Type: View
View DBT Documentation
View the complete technical documentation and data lineage for this table
Description
This table contains one row per token account address, recording the range of blocks during which a given owner controlled the account. It enables historical tracking of token account ownership on the Solana blockchain, supporting attribution of token balances and transfers to the correct owner at any point in time. Each row represents a unique ownership period for a token account, with start and end block identifiers. Null end_block_id indicates current ownership.Key Use Cases
- Attribute token balances and transfers to the correct owner at any point in time
- Analyze historical changes in token account ownership
- Support analytics on token flows, DeFi protocol activity, and wallet histories
- Study token distribution, holder analysis, and whale tracking
- Enable time-series and event-based analytics on token account ownership
Important Relationships
- Closely related to
core.fact_token_balances(for balance changes),core.fact_sol_balances(for SOL balances), andcore.ez_transfers(for transfer events) - Use
core.fact_token_balancesto analyze token balance changes and account activity - Use
core.fact_sol_balancesfor SOL balance analytics - Use
core.ez_transfersfor asset movement and transfer analytics - Joins with
core.fact_blocksfor block context andcore.fact_transactionsfor transaction context
Commonly-used Fields
account_address,owner: For account and ownership analyticsstart_block_id,end_block_id: For historical ownership period analysisfact_token_account_owners_id: For unique identification and joins
Columns
| Column Name | Data Type | Description |
|---|---|---|
| ACCOUNT_ADDRESS | TEXT | The base58-encoded address of the token account. Used to uniquely identify SPL token accounts on the Solana blockchain. Each token account holds a balance of a specific SPL token and is controlled by an owner address. |
| OWNER | TEXT | The base58-encoded address of the owner controlling the token account during the specified block range. Ownership may change over time due to transfers or account reassignment. Used to attribute token balances and transfers to the correct user or program at any point in time. |
| START_BLOCK_ID | NUMBER | The block ID (slot number) where the ownership period for the token account begins (inclusive). Used to determine the time range during which a specific owner controlled the account. |
| END_BLOCK_ID | NUMBER | The block ID (slot number) where the ownership period for the token account ends (exclusive). A null value indicates the current owner. Used to determine the time range during which a specific owner controlled the account. |
| FACT_TOKEN_ACCOUNT_OWNERS_ID | TEXT | A unique identifier for the record. |
| INSERTED_TIMESTAMP | TIMESTAMP_NTZ | The timestamp when this transaction record was first inserted into the analytics database. Used for data freshness tracking and incremental model logic. Format: YYYY-MM-DD HH:MI:SS. Not derived from the blockchain, but from the ETL process. |
| MODIFIED_TIMESTAMP | TIMESTAMP_NTZ | The timestamp when this transaction record was last updated in the analytics database. Used for tracking updates and supporting incremental model logic. Format: YYYY-MM-DD HH:MI:SS. Not derived from the blockchain, but from the ETL process. |
Column Details
ACCOUNT_ADDRESS
Example:9xQeWv...
- Enables attribution of token balances and transfers to specific accounts.
- Used in analytics for tracking token holdings, transfers, and ownership changes.
OWNER
Example:7GgkQ2...
- Enables historical tracking of token account ownership.
- Supports analytics on user activity, protocol attribution, and token flows.
START_BLOCK_ID
Example:- 123456789
- Enables historical attribution of token balances and transfers to the correct owner.
- Supports analytics on ownership changes, user activity, and protocol events.
END_BLOCK_ID
Example:- 123456999 (ownership ended at this block)
- null (current owner)
- Enables historical attribution of token balances and transfers to the correct owner.
- Supports analytics on ownership changes, user activity, and protocol events.