Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

SQL Server Analysis Services im mehrdimensionalen Modus Grundkurs

Fehler beim Verarbeiten von Cubes behandeln

Testen Sie unsere 2019 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Über die "ErrorConfiguration"-Eigenschaft der Measure Group und der Dimension kann man erzielen, dass so ziemlich jeder Datenschmutz noch erfolgreich verarbeitet werden kann. Diese Demonstration zeigt, was für Gefahren dadurch entstehen, und lobt die Standardeinstellung von Analysis Services.
07:54

Transkript

Was passiert nun beim Verarbeiten von Cubes, wenn in den Daten Fehler sind. Das kann natürlich jedes Mal passieren und ich möchte zeigen, was man in den Analysis Services machen kann, um solche Fehler eventuell auswerten oder akzeptieren zu können. Dafür brauchen wir zunächst einmal fehlerhafte Datensätze in unserer Faktentabelle Reseller Sales. Das ist gar nicht so einfach. denn wie man hier auch sieht, ist diese Datentabelle wunderbar durch durch relationale constraints abgesichert, das man keine Fehler einfügen kann. Ich hab das trotzdem mal versucht, mit diesem SQL Statement hier Auch im Visual Studio. Ich hab mit zunächst einmal genau eine Bestellung herausgesucht, und wir sehen uns die mal an. Das war hier am 29.11.2013, zwei verschiedene Produkte, jeweils immer einmal bestellt, OrderQuantity 1 und 1, Das heißt, es gibt zwei Bestellungen, die an diesem bestimmten Tag rausgegangen sind und die können wir uns gleich mal im Cube ansehen. Da habe ich dann diesen, vielleicht etwas lästigen aber immerhin doch ganz praktischen Cube Browser hier verwendet und habe gesagt, Moment, erst mal aktualisieren, damit alles in Ordnung ist, ich habe also diesen Tag, den 29.11., die Sales Region Southwest genommen und dann sieht man, das waren 1747 Stückzahlen insgesamt bestellt. Das sind die zwei, die wir jetzt neu einfügen wollen, noch nicht dabei. Denn jetzt sollen eben fehlerhafte Datensätze eingefügt werden. Wie machen wir das? Zunächst mal müssen wir dafür unseren constraint ausschalten. Denn wenn ich jetzt was einfügen will von einem Reseller, den es gar nicht gibt, genau das ist mein Plan, dann muss ich natürlich erst mal sagen, das meine relationale Datenbank das überhaupt akzeptiert. Aber solche Sachen sind ja gut möglich und außerdem hat man sehr, sehr oft in seinen Data Warehouses die constraints deaktiviert, weil das Laden dann einfach schneller geht. Und jetzt kommen die zwei falschen Datensätze rein. Wie mache ich das? Ich lese dieselbe Bestellung aus wie oben, also die zwei Datensätze, und dann verändere ich da zwei Dinge. Ich verändere den Reseller KEy in 999, und da müssen mir jetzt mal alle glauben: diesen Reseller gibt es in der Dimension Reseller absolut nicht. Und ich habe natürlich eine neue Line Number dafür verwendet. Also zwei neue Datensätze. Werden wir sie einfügen können? Nachdem wir den Constraint ausgeschaltet haben - ja. Jetzt nimmt er hier quasi jeden Schmorkohl an. Es sind zwei neue Datensätze drin. Dann wäre das jetzt der Moment, wo wir zum Beispiel unseren Cube hier einfach mal verarbeiten könnten. Wir nehmen den Cube. Vollständig verarbeiten. Dummerweise ist meine Auflösung zu klein, das heißt, der OK Knopf ist nicht zu sehen aber wenn ich das auf Vollbild mache, dann kann ich hier Ausführen drücken, und jetzt wird der Cube aktualisiert und man sieht relativ schnell schon: da gibt es einen Fehler. Weil der Fehler ziemlich weit links kommt, schiebe ich das mal hier rüber. Der Attributschlüssel wurde nicht gefunden Reseller Key Wert 999. Das Attribut ist Reseller Number. Also wir merken uns: wenn ein Fehler in den Daten ist, lässt sich unser Cube einfach nicht mehr verarbeiten. Das ist natürlich dann ärgerlich, weil die Daten fehlen. Aber das sind ja inkorrekte Daten, die fehlen. Also im Grunde vielleicht ein ganz vernünftiges Verhalten. was Analysis Services hier zeigen. Das ist aber nur das Standardverhalten. Ich hatte ja versprochen, das man daran Einiges ändern kann. So kann man zum Beispiel in die Measure Group hineingehen, unter den Eigenschaften, und die so genannte Error Configuration umstellen. Und zwar von Standard, das ist die gute Defaulteinstellung, auf benutzerdefiniert. Da wird es dann etwas mehr tricky. Hier sieht man, was man damit tun kann. Man kann nämlich Key Errors zum Beispiel, behandeln lassen. Wenn hier ein Key Error passiert, was macht er: Convert to Unknown. OK Das ist natürlich irgendwie komisch. Und wie oft macht wer das? Key Error Limit. Genau Null mal. Und das ist natürlich jetzt ganz entscheidend, es dürfen nur Null Schlüsselfehler auftreten. Und die würde er auf Unknown konvertieren. Zu Deutsch: er kann es eben nicht Genau was wir gerade gesehen haben, er wirft einen Laufzeitfehler. Wenn wir jetzt aber sagen: Och komm, 10 Datensätze Müll haben wir eigentlich immer, ist mir eigentlich egal. Sie merken schon: ich empfehle dieses Verhalten nicht. dann könnte ich jetzt hier sagen: 10 falsche Datensätze akzeptierst du mal. Und wenn er damit durch ist, Stop Processing, dann möchten wir doch einen Laufzeitfehler sehen. Dann akzeptieren wir doch diesen Quatsch einfach mal. 10 falsche Datensätze. Und wir sagen jetzt nochmal Bereitstellen, dabei wird ja wieder eine Verarbeitung angestoßen. Und die Verarbeitung ist erfolgreich, er akzeptiert einfach alles. Das ist aber komisch. Jetzt habe ich wirklich zwei zusätzliche Datensätze im Cube, die er vorhin nicht akzeptiert hat? Das ist ja seltsam. Das kann man sogar sehen, wenn wir hier mal auf die Verarbeitung raufschauen, dann sehen wir jetzt an der Stelle die Fehlermeldung nicht. Aber wenn ich jetzt ganz gezielt noch mal eine Verarbeitung anstoßen würde, da ist die Ausgabe etwas üppiger. Dann sagt er: es ist erfolgreich mit Warnungen, es gab zwei protokollierte Probleme und die kann man dann hier im Detail sogar sehen. Dann gibt es die Fehlermeldungen und da stehen dann wieder die selben Fehler mit dem Wert 999. Das heißt, er hatte zwei Warnungen, die hat er protokolliert aber trotzdem hat er das Ganze akzeptiert. Was heißt das denn jetzt für unsere Daten? Wenn wir jetzt mal in den Browser schauen, wohlgemeint, wir erinnern uns: 1747. Wir aktualisieren das hier noch mal. Dann können wir auch noch mal die Abfrage ausführen, dann stellen wir fest: Es hat sich überhaupt nichts verändert. Es sind immer noch die selben Zahlen drin, obwohl er das eigentlich akzeptiert hat. Das ist nun vollends verwirrend. Und woran liegt das? Das liegt daran, weil er hat diesen Reseller auf Unknown konvertiert, aber in der Reseller Dimension, da jetzt mal schauen mit seinen Eigenschaften, da steht bei der Error Konfiguration weiter unten dass das Unknown Member gar nicht existiert. Es gibt kein Unknown Member. Das heißt: hier müsste man erst mal sagen: ich mach das sichtbar. Noch viel schlimmer ist man sagt, das ist hidden, also versteckt. Vorher gab es das gar nicht, jetzt gibt es das, es ist sichtbar. Und man kann ihm sogar einen Namen geben. Weil ich ein Scherzkeks bin sage ich mal: das ist der Große Unbekannte. Also wir haben einen Cube, der hatte gerade zwei falsche Datensätze bei Reseller akzeptiert und jetzt haben wir dem Ganzen mal einen Namen gegeben. Das heißt wir möchten die jetzt gerne auch mal sehen. Machen wieder eine Bereitstellung. Ja und Zack. Auch das ist erfolgreich. Das konnten wir uns ja vorstellen. War ja vorher auch schon erfolgreich. Aber jetzt schauen wir doch mal im Cube in unserem Browser noch mal nach. Das heißt, wir aktualisieren den nochmal. Wir merken uns 1747, starten die Abfrage nochmal und sehen, jetzt ist es wirklich 2 mehr. Das heißt, diese falschen Datensätze werden jetzt auch angezeigt. Jetzt haben wir im Grunde die korrekte Summe. Aber auf welchen Reseller werden die denn gebucht? 999 kann es ja nicht sein. Also ziehen wir uns mal die Reseller Names rein. Dann haben wir die für diesen Tag. Und was sehen wir? logischerweise immer am Ende ist der Große Unbekannte mit der Order Quantity von 2. Also lernen wir: es ist möglich, den Cube Fehler akzeptieren zu lassen, so dass sie überhaupt nicht in den Summen auftauchen. Dann sollten wir sie lieber auftauchen lassen und über die Einstellung Unknown Member die Möglichkeit schaffen, das man wenigstens sieht, was für unbekannte Datenfelder da eventuell in unseren Daten drin sind.

SQL Server Analysis Services im mehrdimensionalen Modus Grundkurs

Lernen Sie eigene OLAP-Cubes und -Lösungen mit dem multidimensionalem Modus der SQL Server Analysis Services zu erstellen.

3 Std. 57 min (54 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:25.04.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!