Explore more topics
Market-data lake

lake.sec_facts dataset schema

Column types and research semantics for NexusTrade’s lake.sec_facts dataset. Read the supported schema before submitting a bounded SQL query.

Query name
lake.sec_facts
Storage partition
year
Columns
20
Jump to a section

Columns and types

BIGINT

  • cik
  • fy

VARCHAR

  • ticker
  • taxonomy
  • concept
  • unit

DOUBLE

  • val

TIMESTAMP

  • periodStart
  • periodEnd
  • filed
  • availableAt

BOOLEAN

  • isInstant

Showing 12 of 20 recorded rows. The complete table is below.

Current logical schema for lake.sec_facts

Inspect the complete lake.sec_facts schema

Scroll sideways to compare all columns. Select a heading to sort.

cikBIGINT
tickerVARCHAR
taxonomyVARCHAR
conceptVARCHAR
unitVARCHAR
valDOUBLE
periodStartTIMESTAMP
periodEndTIMESTAMP
filedTIMESTAMP
availableAtTIMESTAMP
isInstantBOOLEAN
fyBIGINT
fpVARCHAR
formVARCHAR
availabilitySourceVARCHAR
frameVARCHAR
rawArchiveKeyVARCHAR
rawSha256VARCHAR
sourceFilingUrlVARCHAR
accessionVARCHAR

Current logical schema for lake.sec_facts

Query lake.sec_facts using the column names and types below. The query validator and engine use this logical catalog; a field absent from an older shard returns typed NULL.

What this table contains

Raw SEC XBRL facts, one row per (concept, period, filing). Use when a needed concept is not a column on the statement tables.

Inspect a reported XBRL value with units

Query example, not executed here. The dates and filters define the proposed research scope; returned rows and current coverage must be checked in your workspace.

Read concept and unit together with val. periodEnd describes the accounting period; availableAt controls eligibility for a historical decision. Multiple filing versions require explicit selection before aggregation.

SQL
SELECT ticker, taxonomy, concept, unit, val, periodEnd, availableAt, accession
FROM lake.sec_facts
WHERE ticker = 'AAPL'
  AND availableAt >= TIMESTAMP '2026-09-01'
  AND availableAt < TIMESTAMP '2026-09-19'
ORDER BY availableAt, taxonomy, concept, accession
LIMIT 20;

Submit the sec_facts example and read back its parts

Run the exact SQL through the Python SDK

Save this page's SQL as query.sql and the runner below as query.py. Use a registered key with lake scope from Developers. The runner submits the displayed sec_facts query once, saves its operation, waits on that same ID, saves the returned manifest and downloads its Parquet parts.

This submission has not been executed for the reference page. Inspect the SQL, dates and resource limits before running it. Reuse the request key only for this identical SQL and limits; use a new key when changing them.

Shell
python3 -m pip install nexustrade==1.42.0
export NEXUSTRADE_API_KEY="YOUR_LAKE_SCOPED_KEY"
python3 query.py

Python
import json
from pathlib import Path
from nexustrade import NexusTradeClient

# Save the SQL displayed on this page as query.sql.
sql = Path("query.sql").read_text()
client = NexusTradeClient.from_environment()
operation = client.create_lake_query(
    {"query": sql, "limits": {"timeoutSeconds": 30, "maxRows": 50,
                              "maxResultBytes": 1048576}},
    idempotency_key="reference-sec_facts-20261012-v1",
)
Path("query-operation.json").write_text(json.dumps(operation, indent=2))
finished = client.wait_for_lake_query(operation["id"])
if finished["status"] != "completed":
    raise RuntimeError(finished)
manifest = client.get_lake_query_manifest(operation["id"])["result"]
Path("query-manifest.json").write_text(json.dumps(manifest, indent=2))
print(json.dumps(manifest, indent=2))
for part in manifest["parts"]:
    Path(f"query-{part['part']}.parquet").write_bytes(
        client.download_lake_query_part(operation["id"], part["part"], max_bytes=1048576)
    )

Coverage and timing

Inspect source coverage and timing before using the rows

Raw SEC XBRL facts, one row per (concept, period, filing). Use when a needed concept is not a column on the statement tables.

Inspect the returned source dates and nullable fields. For an event-based strategy, use its public availability date to place the observation on the research timeline.

Discussion

Sign in or create a free account to join the discussion.

No comments yet.