Voorbeeld Analytics-queries
BETA: De rapportage-database bevindt zich momenteel in bèta en kan nog veranderen. Deze is alleen beschikbaar via opt-in. Om deel te nemen aan de bèta of vragen te stellen, neem contact op met support@azumuta.com.
Voordat u begint
Nadat u verbonden hebt, selecteer uw workspace-schema. Vervang company_<your-workspace-id> door de door u geconfigureerde schemanaam. Stel de sessietijdzone in op UTC voor consistente maandtotalen.
set search_path to "company_<your-workspace-id>";
set time zone 'UTC';
Wanneer een sync een verwijderd bronrecord detecteert, verwijdert deze de corresponderende rapportage-rijen. Gearchiveerde records kunnen behouden blijven. Oudere databases kunnen een deleted_at-kolom behouden, maar de huidige sync onderhoudt deze niet. Deze queries gebruiken die kolom niet. Zie Deletions and other conventions.
Registraties per status
Tel registraties per opgeslagen status. Alleen registraties met een instructieversie zijn inbegrepen. Dit kan geplande audits omvatten die nog niet zijn gestart. Zie Audit recordings in the reporting database.
select status, count(*) as recordings
from recording
group by status
order by recordings desc;
Issues per board-kolom
Tel Continuous Improvement-issues per board en kolom. Groepeer op de identifiers om kolommen met dezelfde naam gescheiden te houden. Dit omvat gearchiveerde issues. Om gearchiveerde issues uit te sluiten, voeg and archived_at is null toe aan de filter.
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;
Issues aangemaakt per maand
Tel issues per aanmaakmaand in UTC. Dit omvat alle board-types en gearchiveerde issues die in de rapportage-database aanwezig blijven.
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;
Gemiddelde actieve tijd per werkopdracht
actual_duration is de actieve werktijd van een registratie, in seconden. Deze query sluit registraties zonder duur uit. Hij toont het gemiddelde voor de 20 werkopdrachten met de meeste resterende registraties. Er wordt niet gefilterd op status of type registratie.
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;
Tel order-items die aan een zone zijn gekoppeld
Tel-eenheid: één product-order werkopdracht-item. Vervang <zone-id> door de ID van de zone. Dit omvat alle associatietypen en behoudt items in de wachtrij zonder registraties. Er wordt niet gefilterd op order- of registratie-status.
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 controleert op een associatie zonder rijen toe te voegen aan de telling. Een join met registraties is niet vereist. Eén item kan aan meerdere zones gerelateerd zijn, dus tellingen voor verschillende zones kunnen overlappen. Tel die aantallen niet bij elkaar op om een workspace-totaal te berekenen. Zie Zone associations and assignment voor bronprioriteit en beperkingen bij hertoewijzing.
Tel registraties waarop elke operator heeft gewerkt
Tel-eenheid: één distinct registratie per operator. Deze query omvat normale stapbezoeken met een user ID. Hij sluit double-check bezoeken uit en filtert niet op registratie-status of -type.
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;
Herhaalde bezoeken verhogen de telling van een operator niet voor dezelfde registratie. Gedeelde registraties tellen voor meerdere operators, dus optellingen per operator kunnen overlappen. Een open bezoek heeft mogelijk nog geen rij. Dit meet geregistreerde deelname, niet toewijzing of succesvolle voltooiing. Zie Planned users and actual operators.
Vergelijk toepasselijke stappen met geregistreerde antwoorden
Output-eenheid: één toepasselijke stap per registratie. Begin bij recording_step.active = true om stappen uit te sluiten die niet van toepassing zijn op de geselecteerde varianten. Left join normale-visit totals op zowel registratie als stap om stappen zonder totals te behouden.
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;
De query omvat alle registratie-statussen en -types die stap-rijen hebben, inclusief onafgemaakt en geannuleerd werk. Hij sluit double-check totals uit. Houd de type-conditie in de join: een filter in WHERE zou stappen zonder totals verwijderen.
De labels beschrijven bewijs, geen slagen of falen. Sommige stappen vereisen geen antwoord. Een open bezoek of een geblokkeerde controlepoging kan ook een ontbrekend antwoord verklaren. NULL-totals betekenen dat er geen overeenkomende rij is, niet dat er nul pogingen zijn. Zie Visits, attempts, and applicable steps voordat u een antwoord-voltooiingspercentage berekent.
Tips
- Join gerelateerde identifiers. Bijvoorbeeld,
recording.workinstruction_idkomt overeen metworkinstruction.id. - Gebruik de built-in column descriptions om veldbetekenissen en eenheden te controleren.
- Aggregeer en filter in SQL voordat u gegevens in uw BI-tool laadt om de hoeveelheid overgedragen data te verminderen.