Ejemplo de análisis de proveedor con Envision

El script a continuación ilustra el modo en que se puede componer un panel de información de análisis de proveedor con Envision.

Image

read "/sample1/Lokad_Items.tsv"
read "/sample/Lokad_Orders.tsv" as Orders
read "/sample/Lokad_PurchaseOrders.tsv" as PO

show label "Supply analysis" a1f1 tomato

PO.OrderId = "\{PO.Date}-\{PO.Supplier}"
oend := max(Orders.Date)

// Moneda predeterminada y conversiones predeterminadas
when date >= oend - 365
  currency := mode(Orders.Currency)
Orders.NetAmount = forex(Orders.NetAmount, Orders.Currency, currency, Orders.Date)
PO.NetAmount = forex(PO.NetAmount, \
  PO.Currency, currency, PO.Date)

// Principales KPI
show label "Current year" a2
when date >= oend - 365
  show table "Purchased { \{currency}}" b2 with sum(PO.NetAmount)
  show table "Suppliers" c2 with distinct(PO.Supplier)
  show table "POs" d2 with distinct(PO.OrderId)
  show table "Units purchased" e2 with sum(PO.Quantity)
  show table "Units per order" f2 with
    avg(sum(PO.Quantity) by PO.OrderId)

show label "Previous year" a2
when date >= oend - 2 * 365 & date < oend - 365
  show table "Purchased { \{currency}}" b3 with sum(PO.NetAmount)
  show table "Suppliers" c3 with distinct(PO.Supplier)
  show table "POs" d3 with distinct(PO.OrderId)
  show table "Units purchased" e3 with sum(PO.Quantity)
  show table "Units per order" f3 with
    avg(sum(PO.Quantity) by PO.OrderId)

// Gráficos de líneas
Week.purchased := sum(PO.NetAmount)
when date < monday(oend) & date >= monday(oend) - 7 * 52
  show linechart "Weekly purchase volumes{ \{currency}}" a4f6 tomato with
    Week.purchased as "Current year", Week.purchased[-52] as "Previous year"

// Dividido por proveedor
show barchart "Purchase by supplier (1 year){ \{currency}}" a7c9 tomato with
  sum(PO.NetAmount)
  group by PO.Supplier

show barchart "Purchase by category (1 year){ \{currency}}" d7f9 tomato with
  sum(PO.NetAmount)
  group by Category

// Análisis de proveedor con tiempos de entrega
when date >= oend - 365
where PO.DeliveryDate >= PO.Date // entrega solo de pedido de compra
  show table "Supplier analysis (1 year)" a10f13 tomato with
    PO.Supplier as "Supplier"
    distinct(PO.OrderId) as "POs"
    avg(mode(PO.DeliveryDate - PO.Date)
      by PO.OrderId) as "Supplier Lead Time{ days}"
    365 / distinct(PO.OrderId) as "Ordering Lead Time{ days}"
    avg(sum(PO.NetAmount)
      by PO.OrderId) as "Avg POs amount{ \{currency}}"
    avg(sum(PO.Quantity) by PO.OrderId) as "Avg POs units"
    group by PO.Supplier
    order by sum(PO.NetAmount) desc