Skip to main content
Deprecation NoticeThis table will be removed from the platform on December 11, 2025 (4 weeks from November 13, 2025).Please migrate to the new standardized balances tables:
  • ethereum.balances.ez_balances_native_daily - Daily native ETH balance snapshots
  • ethereum.balances.ez_balances_erc20_daily - Daily ERC20 token balance snapshots
The new tables offer improved performance, daily granularity, USD pricing, and are standardized across all EVMs.
Schema: ethereum.core Table: fact_token_balances Type: View β€˜This table contains the unadjusted token balances for users on the Ethereum blockchain. When a token transfer event occurs, we will read the balance of the involved parties at the transfer block. Please see ethereum.core.dim_contracts for decimal adjustments. Includes both ERC20s and ERC721s.β€˜

Columns

Column NameData TypeDescription
BLOCK_NUMBERNUMBERBlock number at which the token balance was read.
BLOCK_TIMESTAMPTIMESTAMP_NTZTimestamp of block number read.
USER_ADDRESSTEXTWallet / contract address holding tokens.
CONTRACT_ADDRESSTEXTThe contract address of the token.
BALANCENUMBERThe unadjusted token balance.
FACT_TOKEN_BALANCES_IDTEXTPrimary key - unique identifier for each row ensuring data integrity.
Format: Usually VARCHAR containing composite key generated using MD5 hash of the relevant columns. Example: MD5(block_number, tx_hash, trace_index) Usage:
  • Deduplication in incremental loads
  • Join operations for data quality checks
  • Troubleshooting specific records
Important: Implementation varies by table - check table-specific documentation. | | INSERTED_TIMESTAMP | TIMESTAMP_NTZ | UTC timestamp when the record was first added to the Flipside database. Format: TIMESTAMP_NTZ Use Cases:
  • Data freshness monitoring
  • Incremental processing markers
  • Debugging data pipeline issues
  • SLA tracking
Query Example:
-- Check data latency
SELECT
    DATE_TRUNC('hour', block_timestamp) as block_hour,
    DATE_TRUNC('hour', inserted_timestamp) as insert_hour,
    AVG(TIMESTAMPDIFF('minute', block_timestamp, inserted_timestamp)) as avg_latency_minutes
FROM <blockchain_name>.core.fact_transactions
WHERE block_timestamp >= CURRENT_DATE - 1
GROUP BY 1, 2;
``` |
| MODIFIED_TIMESTAMP | TIMESTAMP_NTZ | UTC timestamp of the most recent update to this record.

**Format**: TIMESTAMP_NTZ

**Triggers for Updates**:
- Data corrections
- Enrichment additions
- Reprocessing for accuracy
- Schema migrations

**Monitoring Usage**:
```sql
-- Recently modified records
SELECT *
FROM <blockchain_name>.core.fact_transactions
WHERE modified_timestamp > inserted_timestamp
AND modified_timestamp >= CURRENT_DATE - 1;

-- Data quality tracking
SELECT
    DATE(modified_timestamp) as mod_date,
    COUNT(*) as records_updated,
    COUNT(DISTINCT block_number) as blocks_affected
FROM <blockchain_name>.core.fact_transactions
WHERE modified_timestamp > inserted_timestamp
GROUP BY 1
ORDER BY 1 DESC;
``` |