Artikel-Schlagworte: „SQL“

Aktueller Benutzer im BI Publisher

Donnerstag, 17. September 2009

Seit einigen Tagen beschäftige ich mich nebenbei ein wenig mit dem Oracle BI Publisher. Die ersten Versuche aus des Sicht des Administrators gelten natürlich zunächst der Sicherheit. Einen zentralen Reportingserver mit gespeicherten Zugängen zu produktiven Datenquellen sollte man nicht leichtfertig aufbauen. Während die Umstellung der Authentifizierung auf LDAP einwandfrei funktioniert hat, bin ich bei der Einschränkung der Daten auf größere Probleme gestoßen. Wie kann ich dem Benutzer – abhängig von seinen applikationsseitigen Rechten – nur gefilterte Daten zur Verfügung stellen?

Aus der vorherigen Frage ergab sich schnell die nächste… Welcher Benutzer ist eigentlich gerade am BI Publisher angemeldet?

Um es kurz zu machen: Die Dokumentation half hier nicht weiter, allerdings wurde ich im OTN Forum fündig. Die Bind Variable :xdo_user_name steht bei der Definition der Datenquelle in den SQL Statements zur Verfügung. Somit können die Daten über den Benutzernamen eingeschränkt werden.

SELECT  *
FROM    my_secret_table
WHERE   username = :xdo_user_name;

Es wäre spannend zu wissen, ob weitere :xdo… Variablen existieren die z.B. die Gruppenzugehörigkeigt oder ähnliches erkennen lassen.

Oracle Expression Filter

Dienstag, 27. Januar 2009

Was nützt ein riesiger und strukturierter Datenbestand, wenn man nicht flexibel aber dennoch effektiv darin suchen kann? Als eines von zahlreichen positiven Beispielen sei hier die Autobörse http://www.autoscout24.de/ genannt. Dem Benutzer stehen Suchkriterien von A bis Z, quasi der Automarke bis zum Zulassungsdatum, zur Eingrenzung seiner Suche zur Verfügung. Seine Wunschkriterien kann jeder Benutzer sogar speichern und bei neuen Einträgen wird er automatisch informiert.
Mit steigender Anzahl von Suchkriterien wächst die Komplexität der Suchabfrage. Wenn man sich das SQL Statement vorstellt, welches sich über diese Seite generieren lässt, kann einem Entwickler durchaus schwindelig werden. Ein wenig Abhilfe schafft der Oracle Expression Filter, ein Feature innerhalb der Datenbank.

(weiterlesen…)

Ändern Primärschlüssel die Logik von SQL?

Dienstag, 20. Januar 2009

Im Zeichen des Datenschutzes war ich heute unterwegs um Daten in einer Datenbank unkenntlich zu machen, bevor sie an einen externen Partner ausgeliefert werden. Hierbei tritt das gleiche Problem auf, wie auch bei der sinnvollen Generierung von Testdaten. Die Daten sollen nicht mit realen Daten verknüpfbar sein, allerdings dürfen sie auch nicht kryptisch und unlesbar sein. Ein Beispiel sind z.B. Ortsbezeichnungen. Hierfür habe ich ein tolles Script von Colin Cromm unter http://www.ortsnamengenerator.de/ gefunden, mit dem es schnell möglich ist sich tausende von Ortsnamen zu generieren und für eigene Zwecke zu verwenden. Dieses Posting befasst sich jedoch nicht mit der Generierung von Testdaten, sondern mit einem interessanten Problem, welches mich dabei abgelenkt hat…

(weiterlesen…)

Pivoting in Oracle 11g

Donnerstag, 15. Januar 2009

Ein mächtiges Feature im Bereich “Reporting” ist das sogenannte Pivoting (http://de.wikipedia.org/wiki/Pivot-Tabelle). Was bisher ein schlagkräftiges Argument für Excel war, oder umständlich im Client programmiert werden musste ist nun erstmals als neue SQL Erweiterung in Oracle 11g integriert. Wie mächtig und praxistauglich die Funktion wirklich ist soll ein kleines Beispiel zeigen.

(weiterlesen…)

Pimp my SQL

Mittwoch, 7. Januar 2009

“Form schlägt Inhalt!” ist eine Aussage, der ich mich leider viel zu häufig gegenüber sehe. Das wichtige an einem Report ist die korrekte Schriftart, Linienstärken und die pixelgenaue Ausrichtung der Spalten. Ob eine Zahl hier und dort “ein wenig” falsch ist, das bemerkt in der Regel niemand. Wenn aber die Überschrift nicht zentriert und nicht in Arial 12 ist, dann ist der Bericht wertlos!

Jedoch nicht jede grafische Aufbereitung eines Berichts ist verschwendete Mühe. Seitenlange Zahlenreihen schaut sich niemand an, und selbst wenn, bleibt die Aussagekraft der Zahlen durch die Menge an Informationen verborgen. Ein Mittelweg zwischen Layout/Grafik und Information muss also her. Mein Werkzeug erster Wahl: SQL*Plus.

(weiterlesen…)

Gewusst wie – Analytische Funktionen!

Freitag, 27. Juni 2008

Heute morgen war ich mal wieder im Datenbankforum bei Tutorials.de unterwegs und bin (seit langem) wieder auf eine spannende und berechtigte Frage zu SQL gestoßen. Folgendes Problem liegt vor:

SELECT * FROM PRODUCTS;

PRODUKT      INHALT     LAENGE
------------ -------- --------
Produkt1     Kabel          10
Produkt1     Draht          11
Produkt1     Kabel          15
Produkt2     Draht          12
Produkt3     Kabel           8
Produkt3     Kabel           5
Produkt4     Kabel           3
Produkt5     Draht           1

Die Datensätze sollen nun nach Produkt und Inhalt gruppiert werden. Ermittelt werden soll neben der Gesamtlänge des Inhalts pro Produkt ( SUM( LAENGE ) .. GROUP BY PRODUKT, INHALT ) auch der prozentuale Anteil des Inhalts am Produkt. Im Falle vom Produkt1 hieße dies, 25m Kabel im Verhältnis zu 11m Draht. (weiterlesen…)