BÊTA : La base de données de rapport est actuellement en bêta et peut encore évoluer. Elle est disponible sur opt-in uniquement. Pour rejoindre la bêta ou poser des questions, contactez support@azumuta.com.
Avant de commencer
Après avoir connecté, sélectionnez le schéma de votre espace de travail. Remplacez company_<your-workspace-id> par le nom de schéma configuré. Définissez le fuseau horaire de la session sur UTC pour des totaux mensuels cohérents.
set search_path to "company_<your-workspace-id>";
set time zone 'UTC';
Lorsqu'une synchronisation détecte un enregistrement source supprimé, elle supprime les lignes de rapport correspondantes. Les enregistrements archivés peuvent subsister. Les bases de données plus anciennes peuvent conserver une colonne deleted_at, mais la synchronisation actuelle ne la maintient pas. Ces requêtes n'utilisent pas cette colonne. Voir Suppressions et autres conventions.
Enregistrements par statut
Compter les enregistrements par statut stocké. Seuls les enregistrements avec une version d'instruction sont inclus. Ceux-ci peuvent inclure des audits planifiés qui n'ont pas commencé. Voir Enregistrements d'audit dans la base de données de rapport.
select status, count(*) as recordings
from recording
group by status
order by recordings desc;
Problèmes par colonne du tableau
Compter les problèmes d'amélioration continue par tableau et colonne. Grouper par les identifiants pour garder les colonnes portant le même nom séparées. Ceci inclut les problèmes archivés. Pour exclure les problèmes archivés, ajoutez and archived_at is null au filtre.
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;
Problèmes créés par mois
Compter les problèmes par mois de création en UTC. Ceci inclut tous les types de tableaux et les problèmes archivés qui subsistent dans la base de données de rapport.
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;
Durée active moyenne par instruction de travail
actual_duration est le temps de travail actif d'un enregistrement, en secondes. Cette requête exclut les enregistrements sans durée. Elle affiche la moyenne pour les 20 instructions de travail avec le plus d'enregistrements restants. Elle ne filtre pas par statut ou type d'enregistrement.
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;
Compter les éléments de commande associés à une zone
Unité de comptage : un élément d'instruction de travail de commande de produit. Remplacez <zone-id> par l'identifiant de la zone. Ceci inclut tous les types d'association et conserve les éléments en attente sans enregistrements. Il ne filtre pas le statut de la commande ou de l'enregistrement.
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 vérifie une association sans ajouter de lignes au comptage. Aucune jointure d'enregistrement n'est requise. Un élément peut être lié à plusieurs zones, donc les comptages pour différentes zones peuvent se chevaucher. N'ajoutez pas ces comptages pour calculer un total d'espace de travail. Voir Associations de zones et affectation pour la priorité source et les limites de réaffectation.
Compter les enregistrements sur lesquels chaque opérateur a travaillé
Unité de comptage : un enregistrement distinct par opérateur. Cette requête inclut les visites d'étape normales avec un ID utilisateur. Elle exclut les visites de double vérification et ne filtre pas le statut ou le type d'enregistrement.
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;
Les visites répétées n'augmentent pas le comptage d'un opérateur pour le même enregistrement. Les enregistrements partagés comptent pour plusieurs opérateurs, donc les totaux des opérateurs peuvent se chevaucher. Une visite ouverte peut ne pas avoir encore de ligne. Ceci mesure la participation enregistrée, non l'affectation ou l'achèvement réussi. Voir Utilisateurs planifiés et opérateurs réels.
Comparer les étapes applicables avec les réponses enregistrées
Unité de sortie : une étape applicable par enregistrement. Commencez par recording_step.active = true pour exclure les étapes qui ne s'appliquent pas aux variantes sélectionnées. Jointure gauche des totaux de visite normaux par enregistrement et étape pour conserver les étapes sans totaux.
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;
La requête inclut tous les statuts et types d'enregistrement qui ont des lignes d'étape, y compris le travail inachevé et annulé. Elle exclut les totaux de double vérification. Conservez la condition type dans la jointure : un filtre dans WHERE supprimerait les étapes sans totaux.
Les étiquettes décrivent la preuve, non le passage ou l'échec. Certaines étapes ne nécessitent pas de réponse. Une visite ouverte ou une tentative de vérification bloquée peut également expliquer une réponse manquante. Les totaux NULL signifient aucune ligne correspondante, non zéro tentatives. Voir Visites, tentatives et étapes applicables avant de calculer un taux d'achèvement de réponse.
Conseils
- Joignez les identifiants connexes. Par exemple,
recording.workinstruction_idcorrespond àworkinstruction.id. - Utilisez les descriptions de colonnes intégrées pour vérifier les significations et les unités des champs.
- Agrégez et filtrez en SQL avant de charger les données dans votre outil BI pour réduire la quantité de données transférées.