Beispielabfragen für Analytics

Aktualisiert

BETA: Die Reporting-Datenbank befindet sich derzeit in der Beta 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.

Bevor Sie beginnen

Nachdem Sie sich mit der Reporting-Datenbank verbunden haben, wählen Sie Ihr Workspace-Schema. Ersetzen Sie company_<your-workspace-id> durch den konfigurierten Schema-Namen. Stellen Sie die Sitzungszeitzone auf UTC ein, um konsistente monatliche Summen zu erhalten.

set search_path to "company_<your-workspace-id>";
set time zone 'UTC';

Wenn ein Sync einen gelöschten Quelldatensatz erkennt, entfernt er die entsprechenden Reporting-Zeilen. Archivierte Datensätze können vorhanden bleiben. Ältere Datenbanken können eine deleted_at-Spalte behalten, aber der aktuelle Sync pflegt diese nicht. Diese Abfragen verwenden diese Spalte nicht. Siehe Deletions and other conventions.

Aufzeichnungen nach Status

Zählen Sie Aufzeichnungen nach dem gespeicherten Status. Es werden nur Aufzeichnungen mit einer Instruktionsversion berücksichtigt. Dazu können geplante Audits gehören, die noch nicht begonnen haben. Siehe Audit recordings in the reporting database.

select status, count(*) as recordings
from recording
group by status
order by recordings desc;

Issues nach Board-Spalte

Zählen Sie Continuous-Improvement-Issues nach Board und Spalte. Gruppieren Sie nach den Identifikatoren, um Spalten mit demselben Namen getrennt zu halten. Dies schließt archivierte Issues ein. Um archivierte Issues auszuschließen, fügen Sie der Filterbedingung and archived_at is null hinzu.

select board_id, column_id, column_name, count(*) as issues
from issue
where board_type = 'continuous-improvement'
group by board_id, column_id, column_name
order by issues desc;

Erstellte Issues pro Monat

Zählen Sie Issues nach Erstellungsmonat in UTC. Dies umfasst alle Board-Typen und archivierte Issues, die in der Reporting-Datenbank verbleiben.

select date_trunc('month', created_at) as month,
       count(*) as issues
from issue
where created_at is not null
group by month
order by month;

Durchschnittliche aktive Zeit pro Arbeitsanweisung

actual_duration ist die aktive Arbeitszeit einer Aufzeichnung in Sekunden. Diese Abfrage schließt Aufzeichnungen ohne Dauer aus. Sie zeigt den Durchschnitt für die 20 Arbeitsanweisungen mit den meisten verbleibenden Aufzeichnungen. Es wird nicht nach Status oder Aufzeichnungstyp gefiltert.

select workinstruction_id,
       count(*) as recordings,
       round(avg(actual_duration)::numeric, 1) as avg_seconds
from recording
where actual_duration is not null
group by workinstruction_id
order by recordings desc
limit 20;

Anzahl von Bestellpositionen, die einer Zone zugeordnet sind

Zähleinheit: ein Produkt-Auftrags-Arbeitsanweisungs-Element. Ersetzen Sie <zone-id> durch die Kennung der Zone. Dies umfasst alle Zuordnungsarten und behält wartende Elemente ohne Aufzeichnungen bei. Es wird nicht nach Auftrags- oder Aufzeichnungsstatus gefiltert.

select count(*) as order_items
from product_order_workinstruction as item
where exists (
    select 1
    from product_order_workinstruction_spot as zone
    where zone.product_order_workinstruction_id = item.id
      and zone.spot_id = '<zone-id>'
);

EXISTS prüft auf eine Zuordnung, ohne der Zählung Zeilen hinzuzufügen. Ein Join mit Aufzeichnungen ist nicht erforderlich. Ein Element kann sich auf mehrere Zonen beziehen, sodass sich die Zählungen für verschiedene Zonen überschneiden können. Addieren Sie diese Zählungen nicht, um eine Workspace-Gesamtsumme zu berechnen. Siehe Zone associations and assignment für Priorität der Quellen und Beschränkungen bei der Neuvergabe.

Anzahl der Aufzeichnungen, an denen jeder Operator gearbeitet hat

Zähleinheit: eine eindeutige Aufzeichnung pro Operator. Diese Abfrage umfasst normale Schrittbesuche mit einer Benutzer-ID. Sie schließt Double-Check-Besuche aus und filtert nicht nach Aufzeichnungsstatus oder -typ.

select user_id,
       count(distinct recording_id) as recordings
from instruction_visit
where type = 'normal'
  and user_id is not null
group by user_id
order by recordings desc, user_id;

Wiederholte Besuche erhöhen die Zählung eines Operators für dieselbe Aufzeichnung nicht. Geteilte Aufzeichnungen werden für mehrere Operatoren gezählt, sodass sich Operator-Gesamtzahlen überschneiden können. Ein offener Besuch hat möglicherweise noch keine Zeile. Dies misst die aufgezeichnete Beteiligung, nicht die Zuweisung oder den erfolgreichen Abschluss. Siehe Planned users and actual operators.

Vergleich anwendbarer Schritte mit aufgezeichneten Antworten

Ausgabeeinheit: ein anwendbarer Schritt pro Aufzeichnung. Beginnen Sie mit recording_step.active = true, um Schritte auszuschließen, die für die gewählten Varianten nicht gelten. Left joinen Sie die Normal-Besuchs-Totale nach sowohl Aufzeichnung als auch Schritt, um Schritte ohne Totale zu behalten.

select step.recording_id,
       step.instruction_step_id,
       totals.visits,
       totals.answer_attempts,
       totals.final_answer,
       case
           when totals.id is null then 'No normal-visit totals'
           when totals.final_answer is null then 'No recorded answer'
           else 'Answer recorded'
       end as answer_evidence
from recording_step as step
left join instruction_total_visit as totals
    on totals.recording_id = step.recording_id
   and totals.instruction_step_id = step.instruction_step_id
   and totals.type = 'normal'
where step.active = true
order by step.recording_id, step.instruction_step_id;

Die Abfrage umfasst alle Aufzeichnungsstatus und -typen, die Schrittzeilen haben, einschließlich unvollständiger und abgebrochener Arbeiten. Sie schließt Double-Check-Totale aus. Behalten Sie die type-Bedingung im Join: Ein Filter in WHERE würde Schritte ohne Totale entfernen.

Die Labels beschreiben Evidenz, nicht Bestehen oder Nichtbestehen. Manche Schritte erfordern keine Antwort. Ein offener Besuch oder ein blockierter Prüfversuch kann ebenfalls eine fehlende Antwort erklären. NULL-Totale bedeuten, dass keine passende Zeile existiert, nicht null Versuche. Siehe Visits, attempts, and applicable steps, bevor Sie eine Antwort-Vervollständigungsrate berechnen.

Tipps

  • Verknüpfen Sie verwandte Identifikatoren. Beispielsweise stimmt recording.workinstruction_id mit workinstruction.id überein.
  • Verwenden Sie die eingebauten Spaltenbeschreibungen, um Bedeutungen und Einheiten von Feldern zu prüfen.
  • Aggregieren und filtern Sie in SQL, bevor Sie Daten in Ihr BI-Tool laden, um die zu übertragende Datenmenge zu reduzieren.