Frage

Um dies vorzubereiten, bin ich mit OLAP überhaupt nicht vertraut. Wenn die Terminologie ausgeschaltet ist, können Sie gerne Korrekturen anbieten.

Ich lese über OLAP und es scheint nur um Handelsraum für Geschwindigkeit zu gehen, in dem Sie durch bestimmte Dimensionen vorhanden (oder berechnen) und Aggregationen über Ihre Daten speichern. Ich verstehe, wie dies für Dimensionen funktioniert, die einen diskreten Satz von Werten haben, wie {männlich, weiblich} oder {Jan, Feb, ... dec} oder {@us_states}. Aber was ist mit Dimensionen, die völlig willkürliche Werte wie (0, 1,25, 3.14156, 70000,23, ...) haben?

Verhindert die Verwendung von OLAP die Verwendung von Aggregationen in Abfragen, die die Faktentabellen treffen, oder wird sie nur verwendet, um Dinge zu umgehen, die vorhanden sind? Beliebige Aggregationen für willkürliche Werte müssen noch im laufenden Fliegen durchgeführt werden?

Jede andere Hilfe zum Erlernen von mehr über OLAP wäre sehr geschätzt. Auf den ersten Blick scheinen sowohl Google als auch so etwas trocken zu sein (im Vergleich zu anderen beliebteren Themen).

Bearbeiten: wurde nach einer Dimension gefragt, auf die es willkürliche Werte gibt.

  • Experimentengeschwindigkeit: 1,256 m/s, -2,234 m/s, 33,78 m/s
  • Wert der Transaktionen: $ 120,56, 22,47 USD, 9,47 USD
War es hilfreich?

Lösung

Ihre Geschwindigkeits- und Wertspaltenbeispiele sind normalerweise nicht die Art von Spalten, die Sie auf olap -Weise abfragen würden - sie sind die Werte, die Sie abrufen möchten, und werden vermutlich im Ergebnis eingestellt, entweder als einzelne Reihen oder als aggregierte.

Ich sagte jedoch normalerweise. In unserem OLAP-Schema haben wir ein gutes Beispiel für eine Spalte, an die Sie denken: event_time (ein Datumszeitfeld mit Granualarität bis zur zweiten). In unseren Daten wird es nahezu eindeutig sein - es werden keine zwei Ereignisse in derselben Sekunde stattfinden, aber da wir jahrelange Daten in unserer Tabelle haben, bedeutet dies immer noch Hunderte von Millionen von potenziell diskreten Werten und wenn wir unsere leiten OLAP -Abfragen, wir wollen fast immer auf der Grundlage der Zeitbereiche einschränken.

Die Lösung besteht darin, das zu tun, was David Raznick gesagt hat - Sie erstellen eine "Eimered" -Version des Wertes. In unserer Tabelle haben wir zusätzlich zur Spalte Event_Time eine Spalte Event_Time_Bucketed - die lediglich das Datum des Ereignisses ist, wobei der Zeitteil 00:00:00 ist. Dies reduziert die Anzahl unterschiedlicher Werte von Hunderten von Millionen auf einige Tausend. In allen Abfragen, die am Datum einschränken, beschränken wir dann sowohl die Eimerd- als auch die reale Spalte (da die Spalte der Eimer nicht genau genug ist, um uns den realen Wert zu geben), z. B.:

   WHERE event_time BETWEEN '2009.02.03 18:32:41' AND '2009.03.01 18:32:41'
     AND event_time_bucketed BETWEEN '2009.02.03' AND '2009.03.01'

In diesen Fällen sieht der Endbenutzer die Spalte Event_Time_Bucket nie - sie ist nur für die Abfrageoptimierung da.

Für schwimmende Punktwerte, wie Sie es erwähnen, muss die Bucketing -Strategie etwas mehr Gedanken erfordern, da Sie eine Methode auswählen möchten, die zu einer relativ sogar Verteilung der Werte führt und die Kontiguität bewahrt. Wenn Sie beispielsweise eine klassische Glockenverteilung haben (mit Schwänzen, die sehr lang sein könnten) möchten Sie den Bereich definieren, in dem der Großteil der Bevölkerung lebt (z. B. 1 oder 2 Standardabweichungen vom Mittelwert), teilen Sie sie in Uniform ein Eimer und zwei weitere Eimer für "alles kleinere" und "alles größer" erstellen.

Andere Tipps

Ich habe diesen Link als praktisch empfunden http://www.ssas-info.com/

Schauen Sie sich den Abschnitt "Webcasts" an, in dem Sie durch verschiedene Aspekte führen, von der BI, der Lagerung bis zum Entwerfen eines Würfels, Abmessungen, Berechnungen, Aggregationen, KPIs, Perspektiven usw.

In OLAP-Aggregationen helfen die Abfrage-Reaktionszeit durch vorbereitete Werte, die von der Abfrage verwendet würden. Die Flip -Seite erhöht jedoch den Speicherplatz, da mehr Platz benötigt werden, um Aggregationen abgesehen von den Grunddaten zu speichern.

SQL Server Analysis Services verfügt über nutzungsbasierte Optimierungsassistenten, die bei der Aggregationsdesign hilft, indem Analyse von Abfragen analysiert werden, die von Clients (meldende Clients wie SQL Server -Berichtsdienste, Excel oder andere) eingereicht wurden und das Aggregationsdesign entsprechend verfeinern.

Ich hoffe das hilft.

Prost

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