Frage

Ich habe einen Data-Warehouse typische Sternschemata enthält, und eine ganze Reihe von Code, die Sachen tut wie diese (natürlich viel größer, aber das ist illustrativ):

SELECT cdim.x
    ,SUM(fact.y) AS y
    ,dim.z
FROM fact
INNER JOIN conformed_dim AS cdim
    ON cdim.cdim_dim_id = fact.cdim_dim_id
INNER JOIN nonconformed_dim AS dim
    ON dim.ncdim_dim_id = fact.ncdim_dim_id
INNER JOIN date_dim AS ddim
    ON ddim.date_id = fact.date_id
WHERE fact.date_id = @date_id
GROUP BY cdim.x
    ,dim.z

Ich denke an es mit Blick ersetzen (MODEL_SYSTEM_1, sagen), so daß es:

SELECT m.x
    ,SUM(m.y) AS y
    ,m.z
FROM MODEL_SYSTEM_1 AS m
WHERE m.date_id = @date_id
GROUP BY m.x
    ,m.z

Aber die Aussicht MODEL_SYSTEM_1 müßte eindeutige Spaltennamen enthalten, und ich bin auch besorgt über die Leistung mit dem Optimierer, wenn ich voran gehen und dies tun, weil ich besorgt bin, dass alle Elemente in der WHERE-Klausel über verschiedene Fakten und Dimensionen erhalten optimierten, da die Aussicht auf einem ganzen star werden würde, und Ansichten können nicht parametrisiert werden (Junge würde das nicht cool!)

Also meine Fragen sind -

  1. Ist dieser Ansatz OK, oder ist es nur eine Abstraktion sein würde, die Leistung weh tut und geben nicht meine alles andere als viel schöner Syntax?

  2. Was ist der beste Weg, um diese Ansichten zu-gen zu codieren, doppelte Spaltennamen zu beseitigen (auch wenn der Blick später von Hand gezwickt werden muss), da alle die entsprechenden PK und FKs vorhanden sind? Soll ich nur einige SQL schreibt es aus dem INFORMATION_SCHEMA zu ziehen, oder gibt es ein gutes Beispiel bereits zur Verfügung.

Edit:. Ich habe es getestet, und die Leistung scheint die gleiche, auch auf den größeren Prozesse - auch mehrere Sterne Verbindung, die jeweils diese Ansichten verwenden

Die Automatisierung ist vor allem, weil es eine Reihe dieser Sterne im Data Warehouse ist, und die FK / PK richtig von den Designern geschehen ist, aber ich will nicht durch alle Tabellen oder in der Dokumentation haben, holen . Ich schrieb ein Skript, um die Ansicht zu erzeugen (es auch Abkürzungen für die Tabellen erzeugt), und es funktioniert gut, das Skelett automagically von INFORMATION_SCHEMA zu erzeugen, und dann kann es vor der Festlegung die Erstellung der Ansicht gezwickt werden.

Wenn jemand den Code will, könnte ich wahrscheinlich es hier veröffentlichen.

War es hilfreich?

Lösung

  1. ich diese Technik habe auf mehr Data Warehouse verwende ich mich kümmere. Ich habe keine Leistungsverschlechterung bemerkt, wenn Berichte aus der Basis der Ansichten im Vergleich zu einem Tisch direkten Ansatz läuft, aber noch nie eine detaillierte Analyse durchgeführt wird.

  2. habe ich die Ansichten, die die Designer in SQL Server Management Studio und verwenden keinen automatisierten Ansatz. Ich kann nicht das Schema vorstellen, oft genug zu ändern, dass es die Automatisierung ohnehin lohnen würde. Sie könnten so lange verbringen die Ergebnisse zwicken, da es alle Tabellen auf die Ansicht in erster Linie ziehen genommen hätte!

Um Unklarheiten beseitigt ein guter Ansatz ist die Spaltennamen mit dem Namen der Dimension Vorwort zu der es gehört. Dies ist hilfreich, die Berichterstatter und einen laufenden Ad-hoc-Abfragen.

Andere Tipps

Machen Sie die Ansicht oder Ansichten in in eine oder mehr Zusammenfassung Faktentabellen und materialisiert. Diese müssen nur aufgefrischt werden, wenn die Hauptfaktentabelle aktualisiert wird. Die materialisierte Ansichten werden schnelle abfragen und dies kann ein Gewinn sein, wenn Sie viele Fragen haben, die durch die Zusammenfassung befriedigt werden kann.

Sie können die Data-Dictionary oder Informationen Schema Ansichten verwenden SQL zu generieren, um die Tabellen zu erstellen, wenn Sie eine große Anzahl dieser Zusammenfassungen haben oder sie zu häufig ändern.

Aber ich würde vermuten, dass es nicht wahrscheinlich ist, dass Sie diese sehr oft so Auto-Generierung der Ansichtsdefinitionen möglicherweise nicht der Mühe wert ändern würde.

Wenn Sie verwenden MS SQL Server passieren, könnten Sie einen Inline-UDF versuchen, die zu einem so nahe ist? parametrisierte Ansicht wie es geht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top