offdataai
Finance & Accounting · data model template

Finance General Ledger Analytics data model

Kimball warehouse for the GL: transaction-grain journal lines and a monthly trial-balance periodic snapshot over conformed account/entity/cost-center/period/currency dimensions. Dual functional and reporting currency amounts support consolidation; vendor tax IDs are classified restricted and masked.

Corporate finance general-ledger analytics covering journal-entry postings at line grain and monthly trial-balance snapshots across a multi-entity, multi-currency chart of accounts. A Kimball star schema with conformed account (SCD2 chart of accounts), legal-entity, cost-center, period, and currency dimensions supporting GAAP and IFRS statement classification and consolidation. It is a Kimball dimensional model: fact tables at a declared grain surrounded by conformed dimensions, ready for BI tools and a semantic layer.

KimballFinance & AccountingSOXGAAPIFRS
11
tables
106
columns
14
relationships
3
PII columns

Opening the template creates a project with the ERD, platform-native DDL, a dbt project and documentation already generated (recommended platform: Snowflake). Edit it in plain English or on the canvas, then ship it to any supported warehouse.

Subject areas

journal_entriestrial_balanceconformed_dimensions

Design decisions

  • Journal line grain for the transaction fact

    Kimball recommends declaring the fact at the lowest atomic grain; a single journal line (one account, one debit or credit) is the natural atom of the ledger and supports drill-across to any rollup.

  • Separate monthly trial-balance periodic snapshot

    Balances are semi-additive (sum across accounts, not across periods); a periodic snapshot at account/entity/period grain gives fast statement reporting independent of journal volume.

  • Dual functional and reporting currency measures

    Multi-entity consolidation under IFRS/GAAP requires both the entity functional currency and the group reporting currency on every fact, with the exchange rate retained for audit.

  • SCD2 on the chart of accounts and legal entity

    Restatements and reorganizations change account classification and consolidation method over time; type-2 history preserves the as-was mapping required for comparable period reporting under SOX.

Tables in the Finance General Ledger Analytics model

Every table with its grain, columns, types and keys. PK marks a primary key, BK a business key and PII a column classified as personal data, which gets a masking strategy by default.

Fact tables (2)

fct_gl_journal

Grain: one row per general-ledger journal line

Transaction-grain ledger fact — one row per journal line (debit or credit).

ColumnTypeKeys
gl_journal_keybigintPK
date_keybigint
period_keybigint
account_keybigint
entity_keybigint
cost_center_keybigint
currency_keybigint
department_keybigint
vendor_keybigint
project_keybigint
posting_date_keybigint
journal_idvarchar
journal_line_numberinteger
source_modulevarchar
entry_typevarchar
debit_amountdecimal
credit_amountdecimal
amount_functionaldecimal
amount_reportingdecimal
exchange_ratedecimal
is_postedboolean
is_reversalboolean

fct_trial_balance

Grain: one row per account per entity per fiscal period (monthly periodic snapshot)

Monthly periodic snapshot — balances are semi-additive across periods.

ColumnTypeKeys
period_keybigint
account_keybigint
entity_keybigint
cost_center_keybigint
currency_keybigint
opening_balancedecimal
period_debitsdecimal
period_creditsdecimal
net_movementdecimal
closing_balancedecimal
closing_balance_reportingdecimal
is_adjustedboolean

Dimension tables (8)

dim_date

Grain: one row per calendar day

ColumnTypeKeys
date_keybigintPK
full_datedateBK
month_numbersmallint
month_namevarchar
quartersmallint
yearsmallint
fiscal_yearsmallint
fiscal_periodsmallint
is_business_dayboolean
is_period_endboolean

dim_period

Grain: one row per fiscal accounting period

ColumnTypeKeys
period_keybigintPK
period_codevarcharBK
fiscal_yearsmallint
fiscal_quartersmallint
fiscal_monthsmallint
period_start_datedate
period_end_datedate
period_statusvarchar
is_year_endboolean

dim_account

Grain: one row per GL account per SCD2 version

SCD type 2

ColumnTypeKeys
account_keybigintPK
account_idvarcharBK
account_numbervarchar
account_namevarchar
account_typevarchar
account_subtypevarchar
normal_balancevarchar
gaap_classificationvarchar
ifrs_classificationvarchar
statement_sectionvarchar
parent_account_numbervarchar
is_intercompanyboolean
is_activeboolean

dim_entity

Grain: one row per legal entity per SCD2 version

SCD type 2

ColumnTypeKeys
entity_keybigintPK
entity_idvarcharBK
entity_namevarchar
entity_typevarchar
countryvarchar
functional_currencyvarchar
tax_jurisdictionvarchar
consolidation_methodvarchar
parent_entity_idvarchar
is_eliminatingboolean

dim_cost_center

Grain: one row per cost center per SCD2 version

SCD type 2

ColumnTypeKeys
cost_center_keybigintPK
cost_center_idvarcharBK
cost_center_namevarchar
cost_center_typevarchar
manager_namevarcharPII
regionvarchar
parent_cost_center_idvarchar

dim_department

Grain: one row per department

ColumnTypeKeys
department_keybigintPK
department_idvarcharBK
department_namevarchar
functionvarchar
divisionvarchar

dim_vendor

Grain: one row per vendor per SCD2 version

SCD type 2

ColumnTypeKeys
vendor_keybigintPK
vendor_idvarcharBK
vendor_namevarchar
tax_idvarcharPII
vendor_categoryvarchar
countryvarchar
is_1099boolean

dim_project

Grain: one row per project

ColumnTypeKeys
project_keybigintPK
project_idvarcharBK
project_namevarchar
project_statusvarchar
project_managervarcharPII
start_datedate
end_datedate

Lookup tables (1)

dim_currency

Grain: one row per ISO currency

ColumnTypeKeys
currency_keybigintPK
currency_codevarcharBK
currency_namevarchar
currency_symbolvarchar

Relationships

Each relationship is a foreign key on the first table referencing the second.

  • fct_gl_journal.date_key → dim_date (many-to-one)
  • fct_gl_journal.period_key → dim_period (many-to-one)
  • fct_gl_journal.account_key → dim_account (many-to-one)
  • fct_gl_journal.entity_key → dim_entity (many-to-one)
  • fct_gl_journal.cost_center_key → dim_cost_center (many-to-one)
  • fct_gl_journal.currency_key → dim_currency (many-to-one)
  • fct_gl_journal.department_key → dim_department (many-to-one)
  • fct_gl_journal.vendor_key → dim_vendor (many-to-one)
  • fct_gl_journal.project_key → dim_project (many-to-one)
  • fct_trial_balance.period_key → dim_period (many-to-one)
  • fct_trial_balance.account_key → dim_account (many-to-one)
  • fct_trial_balance.entity_key → dim_entity (many-to-one)
  • fct_trial_balance.cost_center_key → dim_cost_center (many-to-one)
  • fct_trial_balance.currency_key → dim_currency (many-to-one)

Related templates

All templates →
Start for $1

From requirements to AI-ready context, in one platform.

Describe your business in a conversation, start from a template or connect your own database. Your first model is ready in minutes.

Get startedBook a demo

Plans from $1/month · cancel any time