Databaseschema voor rapportage begrijpen

Bijgewerkt

BETA: De beheerde rapportagedatabase 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.

Waar uw gegevens zich bevinden

De beheerde rapportagedatabase slaat de rapporteerbare gegevens van uw workspace op in een schema genaamd company_<normalized-workspace-id>. De naam gebruikt kleine letters en vervangt andere tekens, behalve cijfers, door underscores. Een aangepaste database kan een andere schemanaam gebruiken. Gebruik uw geconfigureerde schemanaam in de voorbeelden hieronder.

De hoofdtabellen

Het inschakelen van de rapportagedatabase synchroniseert alle tabellen hieronder. U kunt geen individuele tabellen selecteren.

Table Wat het bevat
workinstruction, workinstruction_version, workinstruction_tag Werkinstructies, hun versies en de toegewezen tags. Versies omvatten ook niet-goedgekeurde versies. Gebruik is_approved en is_effective om goedkeurings- en ingangsdatumstatus te controleren.
instruction_step De individuele stappen binnen een werkinstructieversie.
instruction_visit, instruction_total_visit, instruction_partial_check Elke keer dat een operator een stap doorloopt, stap-totale aantallen en inzendingen van gedeeltelijke controles.
recording, recording_status, recording_variant, recording_step Registraties gekoppeld aan een werkinstructieversie en hun statusgeschiedenis, geselecteerde variantinformatie en per-stap registratiegegevens. Deze kunnen geplande audits bevatten die nog niet begonnen zijn.
issue, board, issue_column Issues, hun boards en de kolommen van die boards. Deze omvatten Continuous Improvement-, approval-, Andon- en training trajectory-boards. Gebruik issue.board_type om een bordtype te selecteren.
issue_task, issue_comment, issue_attachment, issue_signature, issue_checklist Items die aan een issue zijn gekoppeld.
issue_transition De historie van een issue dat tussen bordkolommen beweegt.
product_order, product_order_workinstruction, product_order_workinstruction_spot Productorders en de werkinstructies die eraan gekoppeld zijn.
article, article_category Productartikelen en hun categorieën, niet kennisbankartikelen.
tree_node De Explore-boomstructuur die modules, mappen en inhoud organiseert.
user, user_group, user_group_member Personen en groepen in uw workspace.

Audit-registraties in de rapportagedatabase

De tabel recording bevat alleen registraties met een numerieke werkinstructieversie. Een registratie zonder versie wordt uitgesloten, zelfs wanneer de status Finished (FINISHED) is.

De registratie hoeft niet In progress (IN_PROGRESS) of Finished te zijn om opgenomen te worden. Een offline download kan een werkinstructieversie koppelen terwijl de status Planned (IN_QUEUE) blijft. Na een succesvolle synchronisatie met de rapportagedatabase kan die registratie met status IN_QUEUE verschijnen.

Automatische downloads hangen af van de geselecteerde content op het apparaat en de datumbereik. Deze kunnen plaatsvinden voordat een operator een audit opent. Zie Device Settings: Offline.

Het afsluiten van een niet-gestarte audit als N/A (NOT_APPLICABLE) koppelt op zichzelf geen werkinstructieversie. Als de registratie geen versie heeft, blijft deze door de rapportagedatabase worden uitgesloten. De status alleen verklaart niet of een audit in de database verschijnt.

Status en resultaat zijn verschillend

De kolom status bevat de opgeslagen waarde, zoals IN_QUEUE, niet het weergavelabel Planned. Zie Status, result, and notes voor alle English labels en opgeslagen waarden.

De tabel recording_status bevat statuswijzigingen. Deze bevat geen wijziging van het resultaat.

De kolom recording.result slaat het geselecteerde resultaat op, zoals Success (SUCCESS), Failed (FAILED), N/A (NOT_APPLICABLE) of Cancelled (CANCELLED). Nieuwe registraties beginnen met PLANNED. Deze waarde kan blijven staan als er geen resultaat geselecteerd wordt. Als de bronregistratie geen resultaatwaarde heeft, is de kolom NULL. Gebruik status, niet result, om de uitvoeringstoestand te identificeren.

De kolom is_failure wordt berekend uit checks, events en rework. Het kan true zijn vanwege:

  • Een mislukte check of double-check.
  • Een koppelresultaat van NOK.
  • Een getal buiten de toegestane grenzen.
  • Een Andon-event, dat een probleem tijdens uitvoering signaleert.
  • Een huidige of eerdere Rework (REWORK) status.

De kolom is_defect gebruikt dezelfde controles maar sluit rework alleen uit. Bijvoorbeeld: rework zonder een mislukte check of Andon-event geeft is_failure = true en is_defect = false. Eerdere rework kan is_failure = true houden nadat de registratie is afgesloten. Zie Rework voor de workflow.

Geen van beide berekeningen gebruikt het geselecteerde resultaat. Gebruik result, niet is_failure = false, om N/A of Success te identificeren. Een registratie kan is_failure = false hebben zonder dat er een resultaat is geselecteerd.

Opmerkingen bij registraties

De kolom recording.notes bevat de opmerkingen bij de registratie, inclusief opmerkingen die zijn ingevoerd bij een resultaat. U kunt filteren op notes = 'auto cleanup' om registraties met die exacte opmerking te vinden. Ontbrekende of lege opmerkingen verschijnen als NULL.

Rijen gesynchroniseerd voordat result en notes werden toegevoegd, kunnen nog steeds NULL in deze kolommen hebben. Een normale sync werkt alleen gewijzigde registraties bij. Een volledige resync is nodig om deze kolommen te vullen voor ongewijzigde historische registraties.

Voltooid werk en gesloten orders

Registratiestatus en product-orderstatus beschrijven verschillende niveaus van werk:

Field and value Betekenis
recording.status = 'FINISHED' De registratie is beëindigd. Controleer result apart.
product_order.enhanced_status = 'all-complete' (All complete) De actieve order voldoet aan de berekende voltooiingsvoorwaarden. Deze houden rekening met de werkinstructies, aantallen en niet-gearchiveerde suborders.
product_order.enhanced_status = 'finished' (Finished) De order is gesloten.

Een order kan In progress blijven terwijl haar registraties zijn afgerond maar de voltooide hoeveelheid niet overeenkomt met de vereiste hoeveelheid. Een actieve order zonder werkinstructies of suborders is All complete. Zie Product-order status.

Force-finishing an order annuleert onafgewerkte registraties. Die registraties krijgen status FINISHED en resultaat CANCELLED. Sluiting is dus geen bewijs van succesvolle uitvoering. product_order.finished_at registreert het moment van orderafsluiting, niet noodzakelijkerwijs het moment waarop al het werk is voltooid.

Zone-associaties en toewijzing

product_order_workinstruction_spot koppelt elk orderitem aan zijn zones. De zone_type identificeert de bron:

  • assigned: een zone die aan het orderitem is toegewezen.
  • accessed: een zone die is geregistreerd tijdens operatoractiviteit, tenzij dieselde zone al assigned is.
  • associated: een zone afkomstig van de plaatsing van de werkinstructie, gebruikt alleen wanneer het item geen assigned of accessed zones heeft.

De tabel combineert toegewezen en geraadpleegde zones. Het houdt één rij per item en zone, waarbij assigned prioriteit heeft. Een vergrendelde toewijzing is geen apart SQL-zone-type.

Bijvoorbeeld: een item is toegewezen aan A, geraadpleegd op A en B, en heeft standaardplaatsing C. De rijen zijn assigned A en accessed B, zonder C. Een filter op zone_type = 'accessed' mist daarom de toegang op A.

Fallback-plaatsing gebruikt de directe ouder tree node van de werkinstructie wanneer die node een zone is. Hij doorzoekt geen willekeurige voorouders.

Toewijzingen kunnen veranderen. De velden assigned_spot_id beschrijven toewijzing, niet een onveranderlijke uitvoeringslocatie. De associatietabel is geen toewijzingshistorie. De regels komen ook niet altijd overeen met elke ingebouwde widget. Zie Zone filtering for product-order widgets voor widgetconfiguratie.

Koppelen op order-itemniveau

Om gepland werk te tellen, begin bij product_order_workinstruction. Als u registratiedetails nodig heeft, gebruik dan een left join van recording_id naar recording.id. Dit behoudt items zonder een rapportageregel voor een registratie.

Koppel zones via product_order_workinstruction_spot.product_order_workinstruction_id = product_order_workinstruction.id. Koppel niet alleen op workinstruction_id: meerdere orderitems kunnen dezelfde werkinstructie gebruiken.

Meerdere zones of bezoeken kunnen de hoeveelheid van een item of de duur van een registratie in een samengestelde resultaatset dupliceren. Gebruik EXISTS voor een associatiefilter, of aggregeer elke bron voordat u koppelt. Zie Count order items associated with a zone.

Geplande gebruikers en daadwerkelijke operators

recording.planned_user_id en planned_group_id beschrijven de toewijzing. Ze identificeren niet iedereen die aan het werk heeft bijgedragen. instruction_visit.user_id identificeert de operator voor dat bezoek.

Meerdere operators kunnen bijdragen aan één registratie. Tel distinct recording IDs per operator, niet de bezoekrijen. Een gedeelde registratie telt dan voor elke bijdragende operator. Zie Recordings voor de rapportworkflow en the operator query voor deze berekening.

Bezoeken, pogingen en toepasselijke stappen

  • instruction_visit heeft een rij wanneer een operator een stap verlaat. Een bezoek dat nog open is, kan nog geen rij hebben.
  • type = 'normal' en type = 'double-check' zijn afzonderlijke bezoekgroepen. is_last_visit markeert het laatste bezoek binnen zijn groep, niet noodzakelijkerwijs het laatste bezoek met een antwoord. Zie Double-checks.
  • Een geblokkeerde of ongeldige check telt als een poging maar levert geen geaccepteerd antwoord op. instruction_total_visit.answer_attempts telt bezoeken met een poging nadat de operator vertrekt, niet individuele button-presses.
  • instruction_total_visit bevat totals en het uiteindelijke vastgelegde antwoord per registratie, stap en bezoektype. Een vastgelegd antwoord is niet per definitie een succesvol antwoord.
  • recording_step.active = false betekent dat varianten de stap uitsluiten. Er wordt geen bezoek verwacht. Oudere registraties zonder opgeslagen variantselectie behandelen alle stappen als actief. Zie Variants en variant configuration.

Ontbrekende gegevens op zich bewijzen geen falen. Controleer toepasbaarheid, registratiestatus en of de stap een antwoord vereist. Zie Compare applicable steps with recorded answers.

Versie- en parametercontext

Koppel recording.workinstruction_version_id aan workinstruction_version.id om de versie te lezen die aan de registratie is gekoppeld. Gebruik niet de huidige werkinstructieversie om historische stappen te interpreteren. Goedkeuring is een aparte eigenschap; zie Revisiegeschiedenis.

Voor product-order-registraties leest u parameters uit product_order.parameters via recording.product_order_id. Andere registratieparameters kunnen in recording.parameters staan. Zie Product-order parameters en Introduction to parameters voor wat een parameter is.

JSON-velden kunnen lijsten of geneste objecten bevatten, niet alleen nummers of tekst. Controleer het type van elke waarde voordat u deze converteert. Een SQL NULL geeft ontbrekende gegevens aan, geen nul of een mislukt antwoord.

Geldende conventies

  • Primaire sleutels. Elke tabel heeft een tekstuele primaire sleutel met de naam id. Dit identificeert een bronrecord of een gegenereerde rij. Gerelateerde kolommen gebruiken namen zoals recording_id en workinstruction_id. Bijvoorbeeld: koppel recording.workinstruction_id aan workinstruction.id.
  • Verwijderingen. Wanneer een sync een verwijderd bronrecord detecteert, verwijdert die de bijbehorende rapportagerijen. De huidige tabeldefinities bevatten geen deleted_at. Oudere databases kunnen deze kolom behouden omdat schema-updates oude kolommen niet verwijderen. De huidige sync onderhoudt deze kolom niet; gebruik deze niet als actueel verwijderingsindicator. Gearchiveerde records verschillen van verwijderde records. Bijvoorbeeld identificeert issue.archived_at gearchiveerde issues.
  • Sync-tijdstempels. Elke tabel heeft first_synced_at en last_synced_at. Deze registreren de eerste en meest recente sync die de rij schreef, niet de creatie- of wijzigingstijd van het bronrecord.
  • Bron-tijdstempels. Kolommen zoals created_at, updated_at en started_at zijn tabelafhankelijk. PostgreSQL slaat deze tijdstempels op als tijdstippen in UTC en toont ze in de sessie-tijdzone.
  • Registratieduur. recording.actual_duration en recording.rework_time zijn in seconden en kunnen fracties bevatten. Deel ze niet door 1000. Controleer de kolombeschrijving voor de eenheid van andere velden.
  • Flexibele velden gebruiken JSON. Gegevens die in vorm variëren (zoals parameters of een instructie answer) worden opgeslagen als jsonb, die u kunt bevragen met PostgreSQL's JSON-operators.
  • Voorberekende waarden. Om extra joins te besparen bevatten sommige tabellen kant-en-klare aantallen en metrics, bijvoorbeeld issue.comment_count, issue.open_task_count of recording.rework_time.

De ingebouwde data dictionary

Elke tabel en elke kolom heeft een leesbare beschrijving eraan gekoppeld. De meeste SQL-clients en BI-tools tonen deze automatisch. Bijvoorbeeld in psql:

\d+ "company_<your-workspace-id>".issue

U kunt ze ook uitlezen met een 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;

Klaar om te queryen? Zie Example Analytics Queries.