PAT Enterprise.Information System.Abfragen: Unterschied zwischen den Versionen

Aus PPwiki
Wechseln zu: Navigation, Suche
(Reports)
 
(34 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{DISPLAYTITLE:BI}}
+
{{DISPLAYTITLE:BI Abfragen}}
 +
SQL Profis erfahren hier, wie sie die Abfragen im BI Designer ändern und die Filter bearbeiten können.
  
= SQL Abfrage / Parameter =
+
Das Anpassen der Ausgabe als Tabellen, Reports oder Dashboard wird [[PAT_Enterprise.Information_System|hier]] beschrieben.
 +
 
 +
= Parameter =
 +
* Bei '''optionalen Parametern''' wird zu Anfang der Zeile (Bedingung) ein Fragzeichen geschrieben (ohne Einrückung!), z.B. ''?AND B_AUFTRCOL.FORM = :FORM''.
 +
** Gibt es nur optionale Parameter, muss hinter dem WHERE erstmal ein Ausdruck folgen, der immer wahr ist (z.B. 1=1).
 +
* Parameter als '''IN''' (Multiselect): WHERE ... IN (:Parameter)
 +
** Oder WHERE ...  = IN(:land)?
 +
* Alle drei '''Lookup''' Optionen für Parameter funktionieren nur mit Textfeldern (Varchar2 bzw. String), nicht mit Zahlenwerten oder Datumsangaben.
 
* Gespeicherte Filter nach '''Ändern von Parametern''' in der SQL Abfrage löschen.
 
* Gespeicherte Filter nach '''Ändern von Parametern''' in der SQL Abfrage löschen.
 
** Sonst wird u.U. falsch oder gar nicht gefiltert.
 
** Sonst wird u.U. falsch oder gar nicht gefiltert.
* Parameter als '''IN''' (Multiselect): WHERE ... IN (:Parameter)
 
** Oder WHERE ...  = IN(:land)?
 
* Gespeicherte Profile nach dem '''Ändern der Abfrage''' (insbesondere der Spalten oder deren Namen) löschen.
 
** Sonst werden u.U. falsche Spalten angezeigt.
 
 
= Anzeige und Formatierungen =
 
 
* BI Auswertungen können direkt im PAT Enterprise als '''Tabelle''' und '''Pivot Tabelle''' oder alternativ als '''Dashboard''' angezeigt werden.
 
** Im BI Designer (unter Settings) wird als BI Type ''Default'' (Tabelle und/oder Pivot Tabelle) oder '''Dashboard''' festgelegt.
 
* Darüber hinaus können die Daten in '''Reports''' dargestellt werden (über das Menü ''Berichte'').
 
 
== Tabelle und Pivot Tabelle ==
 
* Im BI Designer (unter Settings) können über die Optionen '''Show Grid''' und '''Show Pivot Grid''' eine der beiden Ansichten ausgeblendet werden.
 
* Beim Aufrufen der Auswertung kann im Menü '''View''' zwischen der Tabelle und der Pivot Tabelle gewechselt werden.
 
* Die Reihenfolge und Breite von spalten sowie das Layout von Pivot Tabellen können im Menü ''Profiles'' als Profile bzw. Layouts gespeichert werden.
 
* Die Formatierung von Zahlen und Daten hingegen ist bei Tabellen und Pivot Tabellen fest eingestellt.
 
 
== Dashboard ==
 
 
=== Übersicht ===
 
 
* Im BI Designer können für eine Auswertung unterschiedliche Dashboards angelegt werden.
 
* Bei Aufrufen der Auswertung können diese im Menü ''Main'' ausgewählt werden.
 
* In Dashboards lassen sich u.a. die Formatierungen von Zahlen und Daten einstellen.
 
 
[https://wiki.cds.co.at/wikipat/index.php?title=CUSTOMER:PAT_Enterprise_En_Dashboard_Layout Dashboard Designer (CDS)]
 
 
[https://devexpress.github.io/dotnet-eud/dashboard-for-desktop/articles/dashboard-designer.html Dashboard Designer (Devexpress)]
 
 
=== Datenelemente ===
 
 
==== Versteckte Datenelemente ====
 
 
; Abmessungen (Dimension) : Zum Filtern
 
; Maßnahme (Measures) :  Zum Sortieren und zur ''Top N'' Begrenzung sowie für '''Formatierungsregeln'''
 
 
[https://docs.devexpress.com/Dashboard/15706/winforms-dashboard/winforms-designer/create-dashboards-in-the-winforms-designer/binding-dashboard-items-to-data/hidden-data-items Hidden Data Items (Dev Express)]
 
 
==== Berechnete Felder (Calculated Fields) ====
 
  
* Rechte Maustaste auf ''Data Source'' (oder darunter)
+
== Datum als Parameter ==
* Beispiel für eine Formel:
+
* Wenn aus als Parametern eingegebenen Daten Zeitdifferenzen in Tagen errechnet werden sollen, müssen diese u.U. erst in Integer umgewandelt werden.
 +
* Das funktioniert so nur mit ganzen Tagen. Das Format 'J' gibt nur die Julianische Tageszahl als Integer zurück, nicht die Zeit als Dezimalstelle hinter den Komma.     
 +
* Im Beispiel funktioniert so im BI Tool, also im Select ohne Umwandlung, aber Level <= nur mit Umwandlung. Im SQL Developer erzeugt es Fehler.
 +
 
<pre>
 
<pre>
Iif(Substring(Max([Ergebnis]),0,1) == '+', Substring(Max([Ergebnis]),1),null)
+
SELECT :VON  - 1 + level AS datum
 +
  FROM  dual
 +
  CONNECT BY LEVEL <= 
 +
    to_number(to_number(to_char(:BIS ,'J')) - to_number(to_char(:VON ,'J')) +1 )  
 
</pre>
 
</pre>
''Index im String beginnt mit 0!''
 
  
[https://devexpress.github.io/dotnet-eud/dashboard-for-desktop/articles/dashboard-designer/work-with-data/creating-calculated-fields.html Calculated Fields (Dev Express)]
+
== Nullwerte ==
  
==== Bedingte Formatierung ====
+
Wir haben im PAT alle möglichen '''Flags''', die NULL, N und J sein können.
[https://supportcenter.devexpress.com/ticket/details/t578847/how-to-set-conditional-formatting-rules-in-textbox Bedingte Formatierung in z.B. Textboxen (Devexpress)]
 
  
== Reports ==
+
Wie kann man das im BI Creator einrichten, dass man dort nur  N oder J hat bei einem Flag, auch wenn es bei manchen Einträgen NULL ist (z.B FL_INAKTIV im Kundenstamm, da man ja nach NULL nicht selektieren kann).
* Im BI Designer können für eine Auswertung verschiedene Report Layouts angelegt werden
+
* Diese Layouts werden im gleichen Report Designer bearbeitet, der auch an anderen Stellen im PAT Enterprise genutzt wird.
+
So klappt es:
** Näheres dazu unter im [https://wiki.pplant.de/PAT_Enterprise#Reports Abschnitt Reports des PAT Enterprise Wikis].
+
<pre>
* Beim Aufrufen einer Auswertung können diese Report über das Menü ''Berichte'' als Vorschau angezeigt oder gedruckt werden.
+
select kndgrp, kndnr, kndkbz, fl_inaktiv, plz, ort, land from b_kndstamm
 +
where 1=1
 +
?and kndgrp = :Kundengruppe
 +
?and land = :land
 +
?and nvl(fl_inaktiv,'N') = :Inaktiv
 +
</pre>
 +
In meiner DB sind von 39 Kunden einer auf J und einer auf N alle anderen sind NULL.
 +
 +
Wenn ich in meiner Liste nach N selektiere bekomme ich die 38, bei J den einen.  
 +
Im select-Teil der Abfrage darf man nicht schon "nvl" verwenden, erst bei den Selektionen.
  
= CDS Tabellen =
+
= Zwei Felder verknüpfen =
* CDS_REPORT
+
Wie können zwei Felder - z.B. Name1, Name2 - miteinander verknüpft werden?
* CDS_FILTERS
 
** Einträge bleiben beim Löschen des Reports erhalten.
 
*** ''Kann es Probleme geben, wenn z.B. im alten Report mehr Parameter waren?''
 
** Wird Tabelle auch für andere Enterprise Menüs benutzt?
 
  
 +
''select Name1||' '||Name2 Beide_Namen ....''
  
= Sonstiges =
+
= Weiterführende Links =
* Neue Reports müssen als Objekte in die Benutzerverwaltung eingetragen werden.
+
*[https://wiki.cds.co.at/wikipat/index.php?title=CUSTOMER:PAT_Enterprise_En_BI_Creator CDS Wiki zum BI Creator (englisch)]
** Siehe unten unter [[#Role Objects Assignemt|Role Objects Assignemt]]
+
*[[BI-Creator_Beschreibung| Deutsche Übersetzung der CDS Wiki-Seite]]
*[https://wiki.cds.co.at/wikipat/index.php?title=CUSTOMER:PAT_Enterprise_En_BI_Creator BI Creator (CDS)]
 

Aktuelle Version vom 25. Mai 2022, 14:11 Uhr

SQL Profis erfahren hier, wie sie die Abfragen im BI Designer ändern und die Filter bearbeiten können.

Das Anpassen der Ausgabe als Tabellen, Reports oder Dashboard wird hier beschrieben.

1 Parameter

  • Bei optionalen Parametern wird zu Anfang der Zeile (Bedingung) ein Fragzeichen geschrieben (ohne Einrückung!), z.B. ?AND B_AUFTRCOL.FORM = :FORM.
    • Gibt es nur optionale Parameter, muss hinter dem WHERE erstmal ein Ausdruck folgen, der immer wahr ist (z.B. 1=1).
  • Parameter als IN (Multiselect): WHERE ... IN (:Parameter)
    • Oder WHERE ... = IN(:land)?
  • Alle drei Lookup Optionen für Parameter funktionieren nur mit Textfeldern (Varchar2 bzw. String), nicht mit Zahlenwerten oder Datumsangaben.
  • Gespeicherte Filter nach Ändern von Parametern in der SQL Abfrage löschen.
    • Sonst wird u.U. falsch oder gar nicht gefiltert.

1.1 Datum als Parameter

  • Wenn aus als Parametern eingegebenen Daten Zeitdifferenzen in Tagen errechnet werden sollen, müssen diese u.U. erst in Integer umgewandelt werden.
  • Das funktioniert so nur mit ganzen Tagen. Das Format 'J' gibt nur die Julianische Tageszahl als Integer zurück, nicht die Zeit als Dezimalstelle hinter den Komma.
  • Im Beispiel funktioniert so im BI Tool, also im Select ohne Umwandlung, aber Level <= nur mit Umwandlung. Im SQL Developer erzeugt es Fehler.
SELECT :VON  - 1 + level AS datum
  FROM  dual
  CONNECT BY LEVEL <=  
    to_number(to_number(to_char(:BIS ,'J')) - to_number(to_char(:VON ,'J')) +1 )   

1.2 Nullwerte

Wir haben im PAT alle möglichen Flags, die NULL, N und J sein können.

Wie kann man das im BI Creator einrichten, dass man dort nur N oder J hat bei einem Flag, auch wenn es bei manchen Einträgen NULL ist (z.B FL_INAKTIV im Kundenstamm, da man ja nach NULL nicht selektieren kann).

So klappt es:

 
select kndgrp, kndnr, kndkbz, fl_inaktiv, plz, ort, land from b_kndstamm 
where 1=1
?and kndgrp = :Kundengruppe
?and land = :land
?and nvl(fl_inaktiv,'N') = :Inaktiv

In meiner DB sind von 39 Kunden einer auf J und einer auf N alle anderen sind NULL.

Wenn ich in meiner Liste nach N selektiere bekomme ich die 38, bei J den einen.

Im select-Teil der Abfrage darf man nicht schon "nvl" verwenden, erst bei den Selektionen.

2 Zwei Felder verknüpfen

Wie können zwei Felder - z.B. Name1, Name2 - miteinander verknüpft werden?

select Name1||' '||Name2 Beide_Namen ....

3 Weiterführende Links