Dashboard builder

Views: de SQL-laag tussen datasource en widget

Views zijn paginagebonden SQL-definities waarmee je bronnen combineert, kolommen standaardiseert en businesslogica één keer centraal vastlegt. Widgets gebruiken daarna de output van die view in plaats van ruwe datasource-output.

1. Wanneer views de juiste keuze zijn

Gebruik een view als je

  • meerdere datasources wilt combineren in één widgetbron;
  • kolomnamen wilt normaliseren voordat meerdere widgets ze gebruiken;
  • één berekening of filterlogica centraal wilt vastleggen;
  • een pagina eenvoudiger wilt maken door widgets op één uniforme dataset te laten werken.

Gebruik liever geen view als

  • één widget een heel kleine, unieke berekening nodig heeft;
  • de transformatie al correct in de datasource of transformlaag zit;
  • de pagina geen herbruikbare SQL-laag nodig heeft.

2. Workflow in de editor

  1. Open een dashboardpagina in bewerkmodus.
  2. Zet eventueel Geavanceerd aan in de topbar zodat de knop Views zichtbaar wordt.
  3. Open de views-dialog.
  4. Maak een nieuwe view aan of dupliceer een bestaande.
  5. Vul identifier, naam, beschrijving en query in.
  6. Bepaal of page filters en globale search naar de viewbronnen worden doorgegeven.
  7. Sla de views op en laat widgets daarna de view gebruiken als bron.

3. Velden in een view

Veld Betekenis
uidVerplichte unieke identifier binnen de pagina. Widgets en interne selectors verwijzen hiernaar.
nameLeesbare naam voor editors en beheerders.
descriptionDocumentatie voor jezelf en collega-beheerders.
applyPageFiltersStuurt actuele page filters door naar de gebruikte bronnen.
applySearchToSourcesStuurt de globale zoekterm door naar de gebruikte bronnen.
queryDe SQL-definitie van de view. Dit is verplicht.

Belangrijke editorregels

  • Lege identifiers blokkeren opslaan.
  • Dubbele identifiers blokkeren opslaan.
  • Lege query’s blokkeren opslaan.
  • Afsluitende puntkomma’s worden opgeschoond voordat de view wordt opgeslagen.

Beschrijving slim gebruiken

  • Leg kort uit welke bron of berekening de view bevat.
  • Noteer verwachte outputkolommen als widgets daar gevoelig voor zijn.
  • Gebruik de beschrijving om collega’s te waarschuwen voor filters of aannames.

4. SQL-model en bronnamen

Views werken met de tabellen die Dashview in de dashboardcontext beschikbaar maakt. Datasources verschijnen daar als global_* tabellen.

Bronnamen

  • Datasource orders wordt bijvoorbeeld global_orders.
  • Speciale tekens worden genormaliseerd zodat de naam SQL-veilig blijft.
  • Gebruik altijd expliciete aliassen als de query complexer wordt.

Filters en placeholders

  • Gebruik placeholders zoals @filters.country.
  • Voor ranges gebruik je meestal From- en To-varianten.
  • Voeg zelf geen extra quotes toe om onverwachte SQL te voorkomen.
SELECT
  o.invoice_date::DATE AS datum,
  o.country,
  o.status,
  o.total,
  c.segment
FROM global_orders o
LEFT JOIN global_customers c
  ON c.customer_id = o.customer_id
WHERE o.country = @filters.country
  AND o.invoice_date >= @filters.invoiceDateFrom
  AND o.invoice_date < @filters.invoiceDateTo

5. Patronen die in de praktijk goed werken

Voor meerdere widgets

  • Normaliseer datums, statusvelden en dimensies één keer in de view.
  • Laat daarna tabel-, KPI- en chartwidgets allemaal op dezelfde definitie werken.
  • Gebruik de view als centrale businessdefinitie voor de pagina.

Voor geavanceerde logica

  • Bereken ratio’s en samengestelde metrics in de view.
  • Gebruik joins om lookupdata of segmentatie toe te voegen.
  • Gebruik windowfuncties voor ranking of trends als meerdere widgets die logica delen.

6. Validatie, fouten en debugging

Probleem Wat meestal de oorzaak is
Identifier is requiredDe uid ontbreekt.
Identifier must be uniqueEen andere view gebruikt dezelfde identifier.
Query is requiredDe SQL is leeg of alleen witruimte.
Bron niet gevondenDe query verwijst naar een niet-beschikbare global_* bron.
Widgetfouten na opslaanDe widget verwacht kolommen die de view niet meer teruggeeft.