Das Reporting-Datenbankschema verstehen
BETA: Die Reporting-Datenbank befindet sich derzeit in der Beta-Phase und kann sich noch weiterentwickeln. Sie ist nur per Opt-in verfügbar. Um an der Beta teilzunehmen oder Fragen zu stellen, kontaktieren Sie support@azumuta.com.
Where Your Data Lives
Die verwaltete Reporting-Datenbank speichert die reportbaren Daten Ihres Workspaces in einem Schema mit dem Namen company_<normalized-workspace-id>. Der Name verwendet Kleinbuchstaben und ersetzt andere Zeichen außer Ziffern durch Unterstriche. Eine kundenspezifische Datenbank kann einen anderen Schemabezeichner verwenden. Verwenden Sie in den untenstehenden Beispielen Ihren konfigurierten Schemabezeichner.
The Main Tables
Enabling the reporting database synchronisiert alle untenstehenden Tabellen. Sie können keine einzelnen Tabellen auswählen.
| Table | What it holds |
|---|---|
workinstruction, workinstruction_version, workinstruction_tag |
Arbeitsanweisungen, ihre Versionen und die zugewiesenen Tags. Versionen umfassen auch nicht freigegebene Versionen. Verwenden Sie is_approved und is_effective, um Freigabe- und Wirksamkeitszustand zu prüfen. |
instruction_step |
Die einzelnen Schritte innerhalb einer Work-Instruction-Version. |
instruction_visit, instruction_total_visit, instruction_partial_check |
Jedes Mal, wenn ein Bediener einen Schritt durchläuft, Schritt-Gesamttabellen und übermittelte Teilprüfungen. |
recording, recording_status, recording_variant, recording_step |
Aufzeichnungen mit einer Instruction-Version und deren Statusverlauf, ausgewählte Variantendaten und pro Schritt erfasste Aufzeichnungsdaten. Diese können geplante Audits enthalten, die noch nicht gestartet wurden. |
issue, board, issue_column |
Probleme, deren Boards und Board-Spalten. Dazu gehören Continuous Improvement-, Genehmigungs-, Andon- und Schulungstrajektorie-Boards. Verwenden Sie issue.board_type, um einen Board-Typ auszuwählen. |
issue_task, issue_comment, issue_attachment, issue_signature, issue_checklist |
An ein Issue angehängte Elemente. |
issue_transition |
Die Historie eines Issues beim Wechsel zwischen Board-Spalten. |
product_order, product_order_workinstruction, product_order_workinstruction_spot |
Produktionsaufträge und die mit ihnen verknüpften Work Instructions. |
article, article_category |
Produktartikel und deren Kategorien, nicht Wissensdatenbank-Artikel. |
tree_node |
Die Explore-Baumstruktur, die Module, Ordner und Inhalte organisiert. |
user, user_group, user_group_member |
Personen und Gruppen in Ihrem Workspace. |
Audit recordings in the reporting database
Die Tabelle recording enthält nur Aufzeichnungen mit einer numerischen Instruction-Version. Eine Aufzeichnung ohne Version ist ausgeschlossen, selbst wenn ihr Status Finished (FINISHED) ist.
Die Aufnahme muss nicht In progress (IN_PROGRESS) oder Finished sein, um aufgenommen zu werden. Ein Offline-Download kann eine Instruction-Version verknüpfen, während der Status Planned (IN_QUEUE) bleibt. Nach einem erfolgreichen Sync der Reporting-Datenbank kann diese Aufzeichnung mit dem Status IN_QUEUE auftauchen.
Automatische Downloads hängen von den auf dem Gerät gewählten Inhalten und dem Datumsbereich ab. Sie können auftreten, bevor ein Bediener ein Audit öffnet. Siehe Device Settings: Offline.
Das Schließen eines nicht gestarteten Audits als N/A (NOT_APPLICABLE) verknüpft nicht automatisch eine Instruction-Version. Wenn die Aufzeichnung keine Version hat, schließt die Reporting-Datenbank sie weiterhin aus. Der Status allein erklärt nicht, ob ein Audit in der Datenbank erscheint.
Status and result are different
Die Spalte status enthält den gespeicherten Wert, z. B. IN_QUEUE, nicht das Anzeige-Label Planned. Siehe Status, result, and notes für alle englischen Labels und gespeicherten Werte.
Die Tabelle recording_status enthält Statusänderungen. Sie enthält keine Ergebnisänderungen.
Die Spalte recording.result speichert das gewählte Ergebnis, z. B. Success (SUCCESS), Failed (FAILED), N/A (NOT_APPLICABLE) oder Cancelled (CANCELLED). Neue Aufzeichnungen starten mit PLANNED. Dieser Wert kann bestehen bleiben, wenn kein Ergebnis ausgewählt wurde. Wenn die Quellaufzeichnung keinen Ergebniswert hat, ist die Spalte NULL. Verwenden Sie status, nicht result, um den Ausführungszustand zu identifizieren.
Die Spalte is_failure wird aus Prüfungen, Ereignissen und Nacharbeit berechnet. Sie kann true sein aufgrund von:
- Einer fehlgeschlagenen Prüfung oder Doppelprüfung.
- Einem Drehmomentergebnis von
NOK. - Einer Zahl außerhalb der erlaubten Grenzen.
- Eines Andon-Ereignisses, das ein Problem während der Ausführung signalisiert.
- Einem aktuellen oder früheren Rework (
REWORK) Status.
Die Spalte is_defect verwendet dieselben Prüfungen, schließt aber alleinige Nacharbeit aus. Zum Beispiel führt Nacharbeit ohne fehlgeschlagene Prüfung oder Andon-Ereignis zu is_failure = true und is_defect = false. Frühere Nacharbeit kann is_failure = true beibehalten, nachdem die Aufzeichnung beendet ist. Siehe Rework für den Workflow.
Keine der Berechnungen verwendet das gewählte Ergebnis. Um N/A oder Success zu identifizieren, verwenden Sie result, nicht is_failure = false. Eine Aufzeichnung kann is_failure = false haben, ohne dass ein Ergebnis ausgewählt wurde.
Recording notes
Die Spalte recording.notes enthält die Aufzeichnungsnotizen, einschließlich Notizen, die zusammen mit einem Ergebnis eingegeben wurden. Sie können mit notes = 'auto cleanup' filtern, um Aufzeichnungen mit genau dieser Notiz zu identifizieren. Fehlende oder leere Notizen erscheinen als NULL.
Zeilen, die vor dem Hinzufügen von
resultundnotessynchronisiert wurden, können in diesen Spalten weiterhinNULLenthalten. Ein normaler Sync aktualisiert nur geänderte Aufzeichnungen. Ein vollständiger Resync ist erforderlich, um diese Spalten für unveränderte historische Aufzeichnungen zu füllen.
Completed work and closed orders
Aufzeichnungsstatus und Produktauftragsstatus beschreiben unterschiedliche Arbeitsebenen:
| Field and value | Meaning |
|---|---|
recording.status = 'FINISHED' |
Die Aufzeichnung ist beendet. Prüfen Sie result separat. |
product_order.enhanced_status = 'all-complete' (All complete) |
Der aktive Auftrag erfüllt die berechneten Abschlussbedingungen. Diese berücksichtigen seine Work Instructions, Mengen und nicht archivierte Unteraufträge. |
product_order.enhanced_status = 'finished' (Finished) |
Der Auftrag wurde geschlossen. |
Ein Auftrag kann weiterhin In progress sein, wenn seine Aufzeichnungen beendet sind, die abgeschlossene Menge jedoch nicht der geforderten Menge entspricht. Ein aktiver Auftrag ohne Work Instructions oder Unteraufträge ist All complete. Siehe Product-order status.
Force-finishing an order bricht seine unvollendeten Aufzeichnungen ab. Diese Aufzeichnungen erhalten den Status FINISHED und das Ergebnis CANCELLED. Daher ist eine Schließung kein Beweis für erfolgreiche Ausführung. product_order.finished_at protokolliert die Auftragsschließung, nicht notwendigerweise den Zeitpunkt, zu dem alle Arbeiten abgeschlossen wurden.
product_order.activated_at protokolliert, wann der Auftrag erstmals aktiviert wurde. Er ist NULL für einen Auftrag, der nie aktiviert wurde, und für einen Auftrag, der vor der Erfassung von Aktivierungszeiten durch Azumuta aktiviert wurde. Er leitet sich nicht von execution_date ab, das ein geplantes Datum ist. Aufträge, die bereits vor dem Vorhandensein dieser Spalte synchronisiert wurden, erhalten nur einen Wert, wenn sie sich ändern. Um ihn für alle bestehenden Aufträge zu füllen, bitten Sie den Azumuta-Support, Ihre Reporting-Daten zu löschen, damit der nächste Sync sie neu aufbaut.
Zone associations and assignment
product_order_workinstruction_spot verbindet jedes Auftrags-Item mit seinen Zonen. Der zone_type identifiziert die Quelle:
assigned: eine Zone, die dem Auftrags-Item zugewiesen ist.accessed: eine Zone, die während der Bedieneraktivität erfasst wurde, sofern dieselbe Zone nicht bereitsassignedist.associated: eine Zone aus der Platzierung der Work Instruction, verwendet nur, wenn das Item keine zugewiesenen oder erfassten Zonen hat.
Die Tabelle kombiniert zugewiesene und erfasste Zonen. Sie behält eine Zeile pro Item und Zone, wobei assigned Priorität hat. Eine gesperrte Zuordnung ist kein separater SQL-Zonentyp.
Beispiel: Ein Item ist A zugewiesen, wurde bei A und B erfasst und hat als Standardplatzierung C. Die Zeilen sind assigned A und accessed B, C fehlt. Ein Filter auf zone_type = 'accessed' übersieht daher den Zugriff bei A.
Fallback-Platzierung verwendet den direkten übergeordneten Baumknoten der Work Instruction, wenn dieser Knoten eine Zone ist. Es werden keine willkürlichen Vorfahren durchsucht.
Zuordnungen können sich ändern. Die Felder assigned_spot_id beschreiben die Zuweisung, nicht einen unveränderlichen Ausführungsort. Die Assoziationstabelle ist keine Zuordnungshistorie. Ihre Regeln stimmen auch nicht mit jedem eingebauten Widget überein. Siehe Zone filtering for product-order widgets für die Widget-Konfiguration.
Join at the order-item level
Um geplante Arbeiten zu zählen, beginnen Sie mit product_order_workinstruction. Wenn Sie Aufzeichnungsdetails benötigen, verwenden Sie einen Left Join von dessen recording_id auf recording.id. Dadurch bleiben Items erhalten, die keine Reporting-Zeile für eine Aufzeichnung haben.
Verbinden Sie Zonen über product_order_workinstruction_spot.product_order_workinstruction_id = product_order_workinstruction.id. Verbinden Sie nicht nur per workinstruction_id: Mehrere Auftrags-Items können dieselbe Work Instruction verwenden.
Mehrere Zonen oder Besuche können in einem verbundenen Ergebnis die Menge eines Items oder die Dauer einer Aufzeichnung mehrfach zählen. Verwenden Sie EXISTS für einen Assoziationsfilter oder aggregieren Sie jede Quelle, bevor Sie verbinden. Siehe Count order items associated with a zone.
Planned users and actual operators
recording.planned_user_id und planned_group_id beschreiben die Zuweisung. Sie identifizieren nicht alle Personen, die die Arbeit ausgeführt haben. instruction_visit.user_id identifiziert den Bediener für diesen Besuch.
Mehrere Bediener können zu einer Aufzeichnung beitragen. Zählen Sie für jeden Bediener eindeutige Recording-IDs, nicht Besuchszeilen. Eine geteilte Aufzeichnung zählt dann für jeden beitragenden Bediener. Siehe Recordings für den Bericht-Workflow und the operator query für diese Berechnung.
Visits, attempts, and applicable steps
instruction_visithat eine Zeile, wenn ein Bediener einen Schritt verlässt. Ein noch offener Besuch kann noch keine Zeile haben.type = 'normal'undtype = 'double-check'sind separate Besuchsgruppen.is_last_visitmarkiert den letzten Besuch innerhalb seiner Gruppe, nicht notwendigerweise den letzten Besuch mit einer Antwort. Siehe Double-checks.- Eine blockierte oder ungültige Prüfung zählt als Versuch, liefert aber keine akzeptierte Antwort.
instruction_total_visit.answer_attemptszählt Besuche mit einem Versuch, nachdem der Bediener den Schritt verlässt, nicht einzelne Knopfdrücke. instruction_total_visitenthält Summen und die final aufgezeichnete Antwort für jede Aufzeichnung, jeden Schritt und jeden Besuchstyp. Eine aufgezeichnete Antwort ist nicht notwendigerweise eine erfolgreiche Antwort.recording_step.active = falsebedeutet, dass Varianten den Schritt ausschließen. Kein Besuch ist zu erwarten. Ältere Aufzeichnungen ohne gespeicherte Variantenauswahl behandeln alle Schritte als aktiv. Siehe Variants und variant configuration.
Fehlende Daten allein beweisen keinen Fehler. Prüfen Sie Anwendbarkeit, Aufzeichnungsstatus und ob der Schritt eine Antwort verlangt. Siehe Compare applicable steps with recorded answers.
Version and parameter context
Verbinden Sie recording.workinstruction_version_id mit workinstruction_version.id, um die mit der Aufzeichnung verknüpfte Version zu lesen. Verwenden Sie nicht die aktuelle Work-Instruction-Version zur Interpretation historischer Schritte. Freigabe ist eine getrennte Eigenschaft; siehe Revision History.
Bei Produktauftrags-Aufzeichnungen lesen Sie Parameter aus product_order.parameters über recording.product_order_id. Andere Aufzeichnungsparameter können in recording.parameters liegen. Siehe Product-order parameters und Introduction to parameters für die Bedeutung eines Parameters.
JSON-Felder können Listen oder verschachtelte Objekte enthalten, nicht nur Zahlen oder Text. Prüfen Sie den Typ jedes Werts, bevor Sie ihn konvertieren. Ein SQL-NULL zeigt fehlende Daten an, nicht Null oder eine fehlgeschlagene Antwort.
Conventions Used Throughout
- Primary keys. Jede Tabelle hat einen Text-Primary-Key namens
id. Dieser identifiziert einen Quell-Datensatz oder eine generierte Zeile. Verwandte Spalten verwenden Namen wierecording_idundworkinstruction_id. Zum Beispiel verbinden Sierecording.workinstruction_idmitworkinstruction.id. - Deletions. Wenn ein Sync einen gelöschten Quell-Datensatz erkennt, entfernt er die entsprechenden Reporting-Zeilen. Aktuelle Tabellendefinitionen enthalten
deleted_atnicht. Ältere Datenbanken können diese Spalte beibehalten, da Schema-Updates alte Spalten nicht entfernen. Der aktuelle Sync pflegt sie nicht; verwenden Sie sie nicht als aktuellen Löschindikator. Archivierte Datensätze unterscheiden sich von gelöschten Datensätzen. Beispielsweise identifiziertissue.archived_atarchivierte Issues. - Sync timestamps. Jede Tabelle hat
first_synced_atundlast_synced_at. Diese protokollieren den ersten und den zuletzt schreibenden Sync für die Zeile, nicht die Erstellung oder Änderungszeit des Quell-Datensatzes. - Source timestamps. Spalten wie
created_at,updated_atundstarted_athängen von der Tabelle ab. PostgreSQL speichert diese Zeitstempel als Instants in UTC und zeigt sie in der Session-Zeitzone an. - Recording durations.
recording.actual_durationundrecording.rework_timesind in Sekunden und können Bruchteile enthalten. Teilen Sie sie nicht durch 1000. Prüfen Sie die Spaltenbeschreibung für die Einheit anderer Felder. - Flexible fields use JSON. Daten, die in der Form variieren (wie
parametersoder eine Instruction-answer) werden alsjsonbgespeichert, die Sie mit PostgreSQLs JSON-Operatoren abfragen können. - Pre-computed values. Um zusätzliche Joins zu sparen, enthalten einige Tabellen fertige Zählungen und Metriken, z. B.
issue.comment_count,issue.open_task_countoderrecording.rework_time.
The Built-In Data Dictionary
Jede Tabelle und jede Spalte hat eine menschenlesbare Beschreibung angehängt. Die meisten SQL-Clients und BI-Tools zeigen diese automatisch an. Zum Beispiel in psql:
\d+ "company_<your-workspace-id>".issue
Sie können sie auch mit einer Abfrage lesen:
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;
Bereit zu queryen? Siehe Example Analytics Queries.
- Where Your Data Lives
- The Main Tables
- Audit recordings in the reporting database
- Completed work and closed orders
- Zone associations and assignment
- Planned users and actual operators
- Visits, attempts, and applicable steps
- Version and parameter context
- Conventions Used Throughout
- The Built-In Data Dictionary