Skip to main content
Schema: flow.core Table: fact_blocks Type: View

Description

This table records all blocks produced on the Flow blockchain, capturing block-level metadata such as block height, timestamp, network, chain ID, transaction count, and parent block references. Each row represents a unique block, providing the foundational structure for all on-chain activity and supporting block-level analytics. The data is sourced directly from the Flow blockchain and is updated as new blocks are produced.

Key Use Cases

  • Analyzing block production rates and network performance
  • Measuring transaction throughput and block utilization
  • Investigating block-level events, forks, or anomalies
  • Supporting time-series analytics and historical blockchain state reconstruction
  • Serving as a join point for transaction, event, and token transfer models

Important Relationships

  • Serves as the parent table for core.fact_transactions, core.fact_events, and core.ez_token_transfers, which reference block height and block timestamp
  • Can be joined with core__fact_transactions on block_height to analyze transactions per block
  • Used by downstream models in the gold layer for time-based aggregations and network health metrics

Commonly-used Fields

  • BLOCK_HEIGHT: Unique identifier for each block, used for joins and ordering
  • BLOCK_TIMESTAMP: Timestamp of block production, essential for time-series analysis
  • TX_COUNT: Number of transactions included in the block, used for throughput and activity metrics
  • CHAIN_ID, NETWORK, NETWORK_VERSION: Identify the network context for the block
  • PARENT_ID: Reference to the parent block, useful for chain reorganization and lineage analysis

Columns

Column NameData TypeDescription
BLOCK_HEIGHTNUMBERBlock height is the unique, sequential integer assigned to each block as it is added to the Flow blockchain. It serves as the primary identifier for block ordering and is used to reference the position of a block within the chain. Data type: INTEGER. Block height is essential for joining block, transaction, and event tables, and for analyzing blockchain growth over time. For example, block height 100,000 refers to the 100,000th block produced on Flow. This field is critical for time-series analytics, chain reorganization analysis, and historical state reconstruction.
BLOCK_TIMESTAMPTIMESTAMP_NTZThe timestamp (in UTC) when the block or transaction was recorded on the Flow blockchain. Data type: TIMESTAMP_NTZ. This field is essential for time-series analysis, ordering events, and joining with other tables by time. For example, a block with block_height 100,000 may have a block_timestamp of ‘2023-01-01 12:00:00’. Used for analytics on network activity, transaction throughput, and historical state reconstruction.
NETWORKTEXTThe name of the blockchain network where the block or transaction was recorded. Data type: STRING. For Flow, this typically indicates the environment (e.g., ‘mainnet’, ‘testnet’, ‘sandboxnet’). This field is important for distinguishing between production and test data, and for multi-network analytics. Example: ‘mainnet’.
NETWORK_VERSIONTEXTThe version identifier of the Flow blockchain network at the time the block was produced. Data type: STRING. This value changes when the network undergoes a protocol upgrade (“spork”). Useful for tracking changes in protocol behavior, analyzing the impact of upgrades, and debugging issues related to network versioning. Example: ‘spork-22’. For more information on Flow’s network upgrades (Sporks), see https://developers.flow.com/nodes/node-operation/spork
CHAIN_IDTEXTThe unique identifier for the blockchain network (chain) where the block or transaction was recorded. Data type: STRING. On Flow, this value distinguishes between different network deployments (e.g., mainnet, testnet). Used for cross-network analytics and ensuring data integrity when working with multiple environments. Example: ‘flow-mainnet’ or ‘flow-testnet’.
TX_COUNTNUMBERThe total number of transactions included in a given block on the Flow blockchain. Data type: INTEGER. This field is used to measure block utilization, analyze network throughput, and identify periods of high or low activity. For example, a block with tx_count = 100 contains 100 transactions. Useful for performance monitoring and capacity planning.
IDTEXTA unique identifier for the record. In the context of blocks, this is the block hash—a cryptographic string that uniquely identifies a block on the Flow blockchain. Data type: STRING. Used for verifying block integrity, referencing blocks in other tables, and supporting chain reorganization analysis. Example: ‘a1b2c3d4…’. For other models, ‘id’ may refer to a unique row identifier.
PARENT_IDTEXTThe hash of the parent block for the current block on the Flow blockchain. Data type: STRING. This field establishes the chain structure by linking each block to its predecessor, enabling chain traversal and reorganization analysis. Example: ‘a1b2c3d4…’ (the block hash of the previous block). Used for lineage analysis, fork detection, and chain integrity verification.
FACT_BLOCKS_IDTEXTpk_id is a surrogate primary key, uniquely generated for each row in the table. Data type: STRING or INTEGER (implementation-specific). This field ensures every record is uniquely identifiable, even if the source data lacks a natural primary key. Used for efficient joins, deduplication, and as a reference in downstream models. Example: an auto-incremented integer or a UUID string. Essential for maintaining data integrity and supporting dbt tests for uniqueness.
_INSERTED_TIMESTAMPTIMESTAMP_LTZ
INSERTED_TIMESTAMPTIMESTAMP_NTZThe UTC timestamp when the record was first created and inserted into this table. Data type: TIMESTAMP_NTZ. Used for ETL auditing, tracking data freshness, and identifying when data was loaded or updated in the analytics pipeline. Example: ‘2023-01-01 12:00:00’. This field is critical for monitoring data latency, troubleshooting ETL issues, and supporting recency tests in dbt.
MODIFIED_TIMESTAMPTIMESTAMP_NTZThe UTC timestamp when this record was last updated or modified by an internal ETL or dbt process. Data type: TIMESTAMP_NTZ. Used for change tracking, ETL auditing, and identifying the most recent update to a record. Example: ‘2023-01-02 15:30:00’. This field is important for troubleshooting data issues, monitoring pipeline health, and supporting recency or freshness tests in dbt.