What you receive
The Parquet catalog exposes two recommended consolidation tables and six lower-level tables for custom models. The recommendedconsolidation_v1 export contains:
group_consolidation_gsheets: consolidated ledger rows with mappings and currency conversion appliedgroup_consolidation_gsheets_dimensions: aligned dimension rows for the consolidated data
Table ontology
The table grain determines how rows can be joined and aggregated. Parquet preserves the BigQuery field names: modeled outputs usesnake_case, while raw compatibility tables retain source-style names such as accountCode and groupDimensionId.
Recommended consolidation tables
Use
group_consolidation_gsheets for account-level totals. Use group_consolidation_gsheets_dimensions when a report needs a dimension breakdown. The dimension table has a finer grain, so do not join it to the account-level table and then sum both tables’ values.
The main field groups are:
- Time and entity:
accounting_month,bq_entity_id - Local account:
account_number,account_name,account_type - Group account:
group_account_number,group_account_name,group_account_type - Lineage:
source_system,source_table - Measures:
statement_value_local,statement_value_group - Dimension-only fields:
dimension_id,dimension_name,item_id,item_name,group_dimension_name,group_dimension_item_name
Lower-level tables
All three
*_latest compatibility tables also include lifecycle metadata (createdAt, updatedAt, deletedAt) and BigQuery ingestion metadata (bq_ts, bq_batch_id, bq_blob_id, bq_entity_id, bq_hash). Filter out rows with a non-null deletedAt when you need only active records.
Conceptually, group_ctrl_uniform_transactions_v2 is the transaction-level fact table. Control applies account and dimension mappings plus fx_rates to produce the two recommended consolidation tables. invoices_ctrl_uniform_v2 is a separate invoice-line fact table and does not join one-to-one with ledger transactions.
Start with the recommended export
- Open the .
- Find the recommended Consolidation export.
- Choose the required accounting month range.
- Request the snapshot.
- Open and wait for the status to become Completed.
- Download the generated files or automate the same flow with the API.
Snapshot behavior
Parquet delivery is snapshot-based, not a continuous hourly feed. A request captures a defined export and optional accounting month range. A completed snapshot remains identifiable by its snapshot ID and manifest. For incremental loading, store each manifest entry’s period or slice key andcontentHash. On the next run, download only files whose hash changed.
Load into a warehouse
A typical ingestion job:- Requests or discovers the latest completed snapshot.
- Reads the manifest.
- Compares period hashes with the last successful load.
- Downloads changed files.
- Loads each file into a staging table.
- Replaces or merges the corresponding accounting periods atomically.
- Records the snapshot ID and hashes as ingestion metadata.
Example: Query a snapshot with DuckDB
After a snapshot completes, download every artifact file returned by the API into the same directory. Keep the bearer token attached to each download request.Access and security
API calls use a Control access-token JWT and are scoped by tenant membership. Parquet exports must also be enabled for the tenant. Do not share download URLs or access tokens in tickets, chat, or source control. Download through the authenticated Control API.Authentication
Discover the authorization server and complete OAuth with PKCE.
API quickstart
Request a snapshot, poll status, and download changed files.
Webhooks
Receive signed consolidation-completed events.