Beta feature. The reporting database is currently in beta and may still evolve. It is available by opt-in only. To join the beta or ask questions, contact support@azumuta.com.
Where Your Data Lives
All of your workspace's data lives in a single schema named company_<your-workspace-id>. Each table inside it maps to a concept you already know from Azumuta.
The Main Tables
The exact set of tables depends on what you enabled. The most common ones are:
| Table | What it holds |
|---|---|
workinstruction, workinstruction_version
|
Your work instructions and their published versions. |
instruction_step |
The individual steps within a work instruction version. |
instruction_visit, instruction_total_visit
|
Each time an operator works through a step, plus per-step totals. |
recording, recording_status
|
Execution sessions (an operator running an instruction) and their status history. |
issue |
Continuous-improvement issues / tickets, with handy pre-computed counts. |
issue_task, issue_comment, issue_attachment, issue_signature, issue_checklist
|
The items attached to an issue. |
issue_transition |
The history of an issue moving between board columns. |
product_order, product_order_item, product_order_item_spot
|
Production orders and their items. |
users, user_group, user_group_member
|
People and groups in your workspace. |
Conventions Used Throughout
Once you know these few rules, the whole schema becomes predictable:
-
Primary keys. Every table has a text primary key (for example
recording_id,issue_id) that matches the record's id in Azumuta. You can use it to join related tables together. -
Soft deletes. Rows are never silently removed. When something is deleted in Azumuta, its row gets a
deleted_attimestamp instead. To work with only current data, addwhere deleted_at is nullto your queries. -
Timestamps. Every table carries
created_atandmodified_at(anddeleted_at). All timestamps are stored in UTC. -
Durations are in milliseconds. Fields such as
actual_durationorrework_timeare stored as whole milliseconds. Divide by 1000 for seconds. -
Flexible fields use JSON. Data that varies in shape (such as
parametersor an instructionanswer) is stored asjsonb, which you can query with PostgreSQL's JSON operators. -
Pre-computed values. To save you from extra joins, some tables include ready-made counts and metrics — for example
issue.comment_count,issue.open_task_count, orrecording.rework_time.
The Built-In Data Dictionary
Every table and every column has a human-readable description attached to it. Most SQL clients and BI tools show these automatically. For example, in psql:
\d+ "company_<your-workspace-id>".issue
You can also read them with a query:
select column_name, col_description(
('company_<your-workspace-id>.issue')::regclass,
ordinal_position
) as description
from information_schema.columns
where table_schema = 'company_<your-workspace-id>'
and table_name = 'issue'
order by ordinal_position;
This means you rarely have to guess what a column means — the schema documents itself.
Ready to query? See Example Analytics Queries.