account
masterThe chart of accounts: one row per account, hierarchical through parent, with its type, currency, special-account marker and the balance NetSuite maintains on it.
this record exposes no lastmodifieddate — there is no watermark column here, so incremental extraction must full-refresh the chart of accounts. And the practical GL path into it is transactionaccountingline.account: real in every implementation, but attested on neither page's Joins table, so this catalog draws no edge for it and you write that join yourself.
Two identifiers, and they are not interchangeable: `id` is the internal id every pointer column holds, and acctnumber is the account number finance reads and reports by. balance is point-in-time STATE that NetSuite maintains — it is not the sum of the accounting lines under the account, and rebuilding it from transaction amounts will not reproduce it across books and currencies; read the balance for balances and the spine for movements. hasSubsidiary is false by design: `subsidiary` here is a MULTISELECT ("Subsidiaries") — one account can serve several — so `subsidiary = <id>` would silently drop every shared account, the location/department/classification verdict again. hasLocation is false for a different reason: location, class and department on this record are "Restrict to" SETTINGS that limit where the account may be posted to, not the grain of anything; the posting dimensions live on the transaction line. The account's own page attests three joins to cataloged records — the parent hierarchy, the deferral account and the account type — and its other pointers target key records this catalog does not carry.
What the badges mean
- master
- Data class: what the record holds — master data, transaction documents, control/configuration, or a documented convenience record. NetSuite has no product-family or schema axis, so this is the whole classification.
- Subsidiary-scoped
- The record carries a
subsidiarycolumn that partitions its rows, so the generated SQL anchors it. On a few records the column is a multiselect rather than a scalar foreign key — the table notes say which (see the quirks guide). - Location-scoped
- The record carries a
locationcolumn — an org segment in NetSuite before it is a warehouse — and the generated SQL anchors it the same way. - View
- A documented convenience record rather than a stored one. Land the records it stands in for instead of assuming it extracts as-is — the table notes say where the rows actually live.
Structural facts — how the record is partitioned, not a trap by itself
Join & extract hazards — verify before you rely on this
'T'/'F' string.Fields
19 fields · 1 key
19 fields.
| # | Field | Description | Type | Flags |
|---|---|---|---|---|
| 1 | id | Internal ID | NUMBER | Primary-key field |
| 2 | acctnumber | Account number as finance reads it — not the internal id | VARCHAR | |
| 3 | fullname | Full hierarchical name | VARCHAR | |
| 4 | accountsearchdisplayname | Display name | VARCHAR | |
| 5 | description | Description | VARCHAR | |
| 6 | accttype | Account type — read as the text mnemonic accounttype.id holds; see that record's notes for the inference | VARCHAR | |
| 7 | sspecacct | Special-account marker for accounts NetSuite itself posts to (internal id) | NUMBER | |
| 8 | parent | Parent account (internal id) — the chart's hierarchy | NUMBER | |
| 9 | currency | Account currency (internal id) | NUMBER | |
| 10 | subsidiary | Subsidiaries the account serves — a MULTISELECT, so no anchor is emitted | NUMBER | |
| 11 | location | Restrict-to-Location setting (internal id) — a posting restriction, not a grain column | NUMBER | |
| 12 | eliminate | Intercompany transactions eliminate on this account | VARCHAR | |
| 13 | isinactive | Inactive | VARCHAR | |
| 14 | issummary | Summary account — a rollup parent that is not posted to | VARCHAR | |
| 15 | includechildren | Child accounts are included in the account's rollups | VARCHAR | |
| 16 | inventory | Account holds inventory value | VARCHAR | |
| 17 | balance | Balance NetSuite maintains on the account — point-in-time state, not a sum of accounting lines | NUMBER | |
| 18 | deferralacct | Account deferred revenue or expense is held in (internal id) | NUMBER | |
| 19 | externalid | External ID | VARCHAR |
Field provenance: hand-curated. 1 key field.
Boilerplate SQL
Starting point for reading the Connect-landed copy of account on Databricks — dates are real DATE/TIMESTAMP columns and need no conversion, and the partition anchors are already in place. This record carries no modification stamp, and the snippet says so where the watermark would otherwise go. Set your Unity Catalog location, schema, and filter values below; they’re substituted into the SQL and the copy button.
3 parameters not filled: <catalog>, <schema>, <id>
-- ============================================================
-- Table : account — The chart of accounts: one row per account, hierarchical through parent, with its type, currency, special-account marker and the balance NetSuite maintains on it.
-- Purpose: Column-selected read of account — auto-generated from field metadata
-- Grain : One row per id
-- Caution: this record exposes no lastmodifieddate — there is no watermark column here, so incremental extraction must full-refresh the chart of accounts. And the practical GL path into it is transactionaccountingline.account: real in every implementation, but attested on neither page's Joins table, so this catalog draws no edge for it and you write that join yourself.
-- Notes : Auto-generated skeleton for NetSuite data landed in your lakehouse from a SuiteAnalytics Connect (or SuiteQL) extract — it never addresses live NetSuite. Identifiers are lowercase as NetSuite2.com renders them. Select-type columns hold numeric internal ids: BUILTIN.DF() display resolution exists only at extraction time, so decode ids by joining the landed list records; see quirks #display-values. Check-box columns arrive as 'T'/'F' strings; see quirks #tf-booleans.
-- ============================================================
SELECT
t.id AS "Internal ID",
t.acctnumber AS "Account number as finance reads it — not the internal id",
t.fullname AS "Full hierarchical name",
t.accountsearchdisplayname AS "Display name",
t.description AS "Description",
t.accttype AS "Account type — read as the text mnemonic accounttype.id holds; see that record's notes for the inference",
t.sspecacct AS "Special-account marker for accounts NetSuite itself posts to (internal id)",
t.parent AS "Parent account (internal id) — the chart's hierarchy",
t.currency AS "Account currency (internal id)",
t.subsidiary AS "Subsidiaries the account serves — a MULTISELECT, so no anchor is emitted",
t.location AS "Restrict-to-Location setting (internal id) — a posting restriction, not a grain column",
t.eliminate AS "Intercompany transactions eliminate on this account", -- 'T'/'F' string — compare = 'T', or CAST via CASE; see quirks #tf-booleans
t.isinactive AS "Inactive", -- 'T'/'F' string — compare = 'T', or CAST via CASE; see quirks #tf-booleans
t.issummary AS "Summary account — a rollup parent that is not posted to", -- 'T'/'F' string — compare = 'T', or CAST via CASE; see quirks #tf-booleans
t.includechildren AS "Child accounts are included in the account's rollups", -- 'T'/'F' string — compare = 'T', or CAST via CASE; see quirks #tf-booleans
t.inventory AS "Account holds inventory value", -- 'T'/'F' string — compare = 'T', or CAST via CASE; see quirks #tf-booleans
t.balance AS "Balance NetSuite maintains on the account — point-in-time state, not a sum of accounting lines",
t.deferralacct AS "Account deferred revenue or expense is held in (internal id)",
t.externalid AS "External ID"
FROM <catalog>.<schema>.account t
WHERE
1 = 1 -- no partition column on this record; the filters below are optional
-- AND t.id = <id>
-- no lastmodifieddate on this record — there is no watermark column, so incremental extraction must full-refresh it (see quirks #deletes)
ORDER BY t.id;Verified August 2026 · Analytics Browser 2021.1 · corroborated 2025.2
Select columns hold internal ids, not display text — see decoding display values.
Relationships
Diagram of 1-hop neighbors — join details below. Document-link edges are highlighted; they chain one document to the next and are the joins newcomers most often get wrong.
Join details
- accountaccountforeign key · N:1
ON account1.parent = account2.id - accountaccountforeign key · N:1
ON account1.deferralacct = account2.id ON account.accttype = accounttype.idON budgets.account = account.id
More Financials tables
- accounttypeThe account-type list: one row per type, carrying the side of the ledger it posts to, whether it belongs on the balance sheet, and the default revaluation and consolidation-rate behavior for accounts of that type.
- budgetcategoryThe budget-category list: four columns naming the categories a budget can be filed under — the original plan, a revision, a forecast — and whether a category is global.
- budgetsThe budget header: one row per budget — an account, a fiscal year and whatever combination of subsidiary, class, department, location, customer and item the budget is dimensioned by — with the total the per-period rows add up to.
- budgetsmachineThe budget's per-period rows: one row per budget and accounting period, with the amount budgeted for that period.
- expensecategoryThe expense-category list: one row per category an expense report line can be coded to, with its default rate, whether a rate must be entered, and the account the expense posts to.
- nexusThe nexus list: one row per tax jurisdiction the account is registered in, hierarchical through a parent nexus, with the country, state and the tax agency filings go to.