Musterstatistik auswerten
Die Musterstatistik ist im Wesentlichen eine statistische Zusammenfassung des Produktionsreports.
Es kann sehr flexibel über unterschiedliche Spalten gruppiert werden (auch kombiniert)
Daher enthalten die meisten Spalten der Rückgabetabelle Arrays.
Bei ungünstigen Gruppierungen über einen längeren Auswertungs-Zeitraum, können diese Arrays sehr groß werden, was sich dann ungünstig auf die Performance der Auswertungen auswirkt.
Beispiel: Auswertung über ein Jahr
Es wird nur nach Maschinen gruppiert. (Nicht kombiniert mit Gruppierung nach Muster oder Ticket)
Die Ergebnispalte AGG_PATTERN_NAME enthält dann ein Array mit allen Musternamen, die in diesem Jahr produziert wurden.
Aufrufparameter:
Hinweis zu den Filtern:
Wie beim Produktionsreport sind sämtliche Filter als „schwache“ Filter implementiert.
Report-Übersicht
Parameter | Type | Beschreibung |
---|---|---|
__sSchema | text | Schema der sekundären Datenbank-Tabellen. |
_sTable_Prefix | text, | Prefix der sekundären Datenbank-Tabellen |
_aSortorder | text[] | Sortierung (Array aus Spaltennamen) Beispiel: ARRAY['MC_SORT_ID','START_TIME'] |
_bGroupByMachine | boolean | Nach Maschine gruppieren |
_bGroupByShift | boolean | Nach Schicht gruppieren |
_bGroupByUserName | boolean | Nach Benutzer (an der Maschine) gruppieren |
_bGroupByPattern | boolean | Nach Muster gruppieren |
_bGroupBySeq | boolean | Nach Sequenz gruppieren |
_bGroupByTicketUid | boolean | Nach Ticket (PPS-UID) gruppieren |
_bGroupByTicketProductionId | boolean | Nach Ticket Produktion ID gruppieren |
_bGroupByTicketProductionSub1Id | boolean | Nach Ticket Produktion SubId 1 gruppieren |
_bGroupByTicketProductionSub2Id | boolean | Nach Ticket Produktion SubId 2 gruppieren |
_bGroupByTicketCustomerId | boolean | Nach Ticket Kunden Id gruppieren |
_bGroupByTicketArticleId | boolean | Nach Ticket Artikel Id gruppieren |
_aFilterShift | integer[] | Über Schicht(en) filtern Beispiel: |
_aFilterUsername | text[] | Über Benutzer (Stricker) filtern Beispiel: ARRAY[‚User_1,'User_3'] |
_aFilterPattern | text[] | Über Sequenzen filtern Beispiel: ARRAY['S-kUuG01','P-Sjo9v3'] |
_aFilterSeq | text[] | Über Sequenzen filtern Beispiel: ARRAY['SEQ-WNJhP3','SEQ-wMWzx2'] |
_aFilterTicketUid | bigint[][] | Über interne Ticket UID filtern Beispiel: ARRAY[3374994314,3738720541] |
_aFilterTicketProductionId | text[] | Über Ticket Produktion Id filtern Beispiel: ARRAY['2E0Hl4-H8T803-cId-8','2E0Hl4-H8T803-cId-8'] |
_aFilterTicketProductionsub1Id | text[] | Über Ticket Produktion Sub1Id filtern Beispiel: ARRAY['SubId_2','SubId_21'] |
_aFilterTicketProductionsub2Id | text[] | Über Ticket Produktion Sub2Id filtern Beispiel: ARRAY['-'] |
_aFilterTicketCustomerId | text[] | Über Ticket Customer Id filtern Beispiel: ARRAY['cId-2','cId-4'] |
_aFilterTicketArticleid | text[] | Über Ticket Artikel Id filtern Beispiel: ARRAY['H8T803'] |
_aFilterUserState | Smallint[] | Über Benutzerzustand filtern Beispiel: ARRAY[4,3] |
_aFilterSintralState | Smallint[] | Über Sintralzustand filtern Beispiel: ARRAY[4,3] |
_xFilterMinDuration | interval | Strickteile, die weniger als x Sekunden aktiv waren, herausfiltern. |
_bFilterUseOnlyNettoTime | boolean | Nur Netto-Zeiten einbeziehen. ( == Maschine hat das Productive-Flag gesetzt == Zeit von Muster geladen bis Stop Stückzähler ist 0 ) |
_bFilterUseOnlyProductiveTicketTime | boolean | Wenn == true, werden Zeiten in denen Wartungstickets oder in denen ohne Tickets produziert wurde, herausgefiltert |
Rückgabetabelle
Hinweise:
- Die Rückgabetabelle enthält zusätzliche „Debugspalten“ deren Namen mit rechteckigen Klammern eingeklammert sind.
Beispiel: [MIN_UID] - Die meisten Spalten geben Arrays als Rückgabewert zurück.
- Diese haben je nach verwendeter Gruppierung oft nur einen Eintrag.
Spalte | Type | Inhalt |
---|---|---|
MC_ID | integer | SKR Maschine Id |
MC_SORT_ID | smallint | Zum alphabetischen Sortieren nach dem Maschinenname |
AGG_SEQ_NAME | text[] | Sequenzname (n) |
AGG_PATTERN_NAME | text[] | Mustername (n) |
START_TIME | timestamp without time zone | Startzeitpunkt |
END_TIME | timestamp without time zone | Endzeitpunkt |
AGG_SHIFT_STATES | smallint[] | Aktive Schichten |
AGG_USER_STATES | smallint[] | Aktive User States während das Teil oder Ticket bearbeitet wurde |
AGG_SINTRAL_STATES | smallint[] | Sintral States während das Teil oder Ticket bearbeitet wurde |
AGG_USER_NAME | smallint[] | Aktive Benutzer während das Teil oder Ticket bearbeitet wurde |
AGG_TICKET_DATA | text[] | TicketData |
KNIT_COUNT | integer | Anzahl der vollständigen Strickteile (nicht abgebrochen) |
BREAK_COUNT | integer | Anzahl der abgebrochenen Strickteile |
SUM_BREAK_DURATION | interval | Zeit die für abgebrochene Teile/Tickets verbraucht wurde (Spalte macht vermutlich nur Sinn, wenn nach Muster gruppiert wurde) |
AVG_DURATION | interval | Durchschnittliche Zeit pro Strickteil
|
MIN_DURATION | interval | Minimale Zeit pro Strickteil mit Stillstandszeiten abgebrochene Teile werden ignoriert |
MAX_DURATION | interval | Maximale Zeit pro Strickteil, mit Stillstandszeiten , abgebrochene Teile werden ignoriert |
SUM_DURATION | interval | Zeit insgesamt
|
AVG_KNIT_DURATION | interval | Durchschnittliche Zeit pro Strickteil
|
MIN_KNIT_DURATION | interval | Minimale Zeit pro Strickteil
|
MAX_KNIT_DURATION | interval | Maximale Zeit pro Strickteil
|
SUM_KNIT_DURATION | interval | Zeit insgesamt
|
[MIN_UID] | bigint | Debuginfo: Startzeitpunkt Uid in <prefix>_collected_filter_rows |
[MAX_UID] | bigint | Debuginfo: Endzeitpunkt Uid in <prefix>_collected_filter_rows |
[AGG_TICKET_UID] | bigint[] | Debuginfo: Aktive Ticket UID’s |
[AGG_TICKET_CUSTOMER_ID] | text[] | Debuginfo: Aktive Ticket CUSTOMER ID‘s |
[AGG_TICKET_ARTICLE_ID] | text[] | Debuginfo: Aktive Ticket ARTICLE ID‘s |
[AGG_TICKET_PRODUCTION_ID] | text[] | Debuginfo: Aktive Ticket PRODUCTION_ID‘s |
[AGG_TICKET_PRODUCTION_SUB1_ID] | text[] | Debuginfo: Aktive Ticket PRODUCTION_SUB1_ID‘s |
[AGG_TICKET_PRODUCTION_SUB2_ID] | text[] | Debuginfo: Aktive Ticket PRODUCTION_SUB2_ID‘s |
Beispielcode „sample_pattern_statistik.sql“
Wichtig:
Es wird davon ausgegangen, dass die Auswert-Hilfstabellen report_01.sample_xxxxxxxx bereits erzeugt sind.
Auswert-Hilfstabellen erzeugen (Cursorlauf - UDF)
Für ein Produktivsystem statt Schema report_01, ein leeres Feld ‘‘ einsetzen. Es muss aber identisch zu dem sein, was bei der Erzeugung der Hilfstabellen angegeben wurde.
select * from skrpps_02.eval_pattern_statistic
(
'report_01' -- Schema
,'sample' – Table Name Prefix
,ARRAY['AGG_MC_SORT_ID','AGG_SEQ_NAME','AGG_PATTERN_NAME'] – Sorting
,true -- GroupBy Machine
,false -- GroupBy Shift?
,false -- GroupBy UserName
,true -- GroupBy Pattern
,true -- GroupBy Sequence
,false -- GroupBy "TICKET_UID"
,false -- GroupBy "TICKET_PRODUCTION_ID"
,false -- GroupBy "TICKET_PRODUCTION_SUB1_ID"
,false -- GroupBy "TICKET_PRODUCTION_SUB2_ID"
,false -- GroupBy "TICKET_CUSTOMER_ID"
,false -- GroupBy "TICKET_ARTICLE_ID"
,NULL -- ARRAY[2,3] -- Filter by shift
,NULL -- ARRAY['User_3','User_4'] -- Selection/Filter UserName
,NULL -- ARRAY['S-kUuG0','P-Sjo9v3'] -- Selection/Filter Pattern
,NULL -- ARRAY['SEQ-WNJhP3','SEQ-9bEqD1'] -- Selection/Filter Sequences
,NULL -- ARRAY[3374994314,3738720541] -- Selection/Filter FilterTicketUid bigint[]
,NULL -- ARRAY['2E0Hl4-H8T803-cId-8','2E0Hl4-H8T803-cId-8'] -- Selection/Filter FilterTicketProductionId text[]
,NULL -- ARRAY['SubId_2','SubId_21'] -- Selection/Filter FilterTicketProductionSub1Id text[]
,NULL -- ARRAY['-'] -- Selection/Filter FilterTicketProductionSub2Id text[]
,NULL -- ARRAY['cId-2','cId-4'] -- Selection/Filter FilterTicketCustomerId text[]
,NULL -- ARRAY['H8T803'] -- Selection/Filter FilterTicketArticleId text[]
,NULL -- ARRAY[4,3] -- Selection/Filter UserState
,NULL -- ARRAY[4,3] -- Selection/Filter SintralState
,'00:00:01' -- FilterMinDuration‚ Filter-out fabric pieces or tickets with a duration shorter than the specified value.
-- (e.g. in order to keep times after ending a ticket and before starting the next out of the report in case of the Auto Production Mode)
,false – Evaluate net times only. ( == Machine has set the Productive flag == Time from pattern loaded state to Piece Counter is zero
,false – If == false, all times allocated to service tickets will be filtered-out.
);