Reportování

Tento text popisuje modul rep, pro definici reportů.

Úvod

Modul umožňuje nadefinovat reporty nad libovolnou databází, spouštět je pro různé časové úseky, případně exportovat do Excelu.

Pro definici dotazů je třeba znalost databáze a znalost SQL.

Modul najdete ve webovém rozhraní v pod Moduly - Reportování. Pro definici přehledu je třeba nadefinovat následující:

  • Zdroj dat: Tohle je connection string do databáze, ve které bude TracePRO spouštět dotaz. Pamatujte, že spojení do databáze musí být read-only. Jinak vznikne nebezpečí poškození dat.

  • Dotaz: Obsahuje databázový dotaz vztažený ke konkrétnímu zdroji dat, a volitelně také předpis na výpočet dalších řádků.

  • Přehled: Je seznam Dotazů, které se spustí v rámci jednoho přehledu.

Formát dotazu

Vlastní entita dotaz má kromě jména, popisu, a zdroje dat dvě pole. Pole Dotaz musí vrátit řádky, které osahují tato pole:

  • tm - datum a čas události.

  • cat - název kategorie.

  • val - hodnota.

  • cat_idx - nepovinné - index pro řazení katergorií. Pokud není, seřadí se kategorie (cat) podle abecedy.

Pole Řádky může být prázdné, pak se použijí všechny kategorie cat z dotazu. Může ale obsahovat také seznam řádků, které se spočítají podle následujících pravidel:

  • Jestliže je přítomen řádek *, použijí se i všechny kategorie z dotazu.

  • Prázdné řádky se ignorují

  • Pokud má řádek formát JMENO=VYRAZ, a výraz je jednoduchý matematický výraz s +, -, *, / a závorkami, výsledek se spočítá tak, že za proměnné ve výrazu se dosadí hodnoty kategorií z dotazu, a výsledek se zobrazí pod jménem kategorie JMENO.

Příklady reportů

Počty kusů pro položku na různých operacích

select
    cnt_order_details.tm,
    concat(op, " - ", act, " - ", p_act.name) as cat,
    cnt_good as val,
    op as cat_idx
from
    productionorder, cnt_order_details, p_act
where
    productionorder.id=cnt_order_details.order_id
    and
    productionorder.item like "ITEM%"
    and
    cnt_order_details.act in (2101, 2102, 2301, 2302, 2501, 2502)
    and
    cnt_order_details.op >= 0
    and
    cnt_order_details.act = p_act.id
;

Vybíráme podle jména položky - vše, co tím jménem začíná. Dále pak bereme podle seznamu úkonů, a pouze operace z postupu (cnt_order_details.op >= 0).

DPMO

Dotaz bude takový:

::

select tm, clazz, key as cat, val from stat_order_counter_k, stat_order_counter_v, productionorder where stat_order_counter_k.id = stat_order_counter_v.c_id and productionorder.id = stat_order_counter_k.order_id and productionorder.item like „OBU5030%“ and act in (2301, 2302) and key in („opportunities“, „DEFECTS“, „COUNT“) order by tm desc ;

Ale ještě musíme něco napsat do Řádků.

DPMO=1000000*DEFECTS/opportunities