Ist OLAP hier mein Freund?

11/11/2008 - 00:17 von Roland Dick | Report spam
Hallo NG,

ich habe ein neues Projekt bekommen, das unter anderem folgende
Anforderungen hat, und ich bin mir nicht ganz schlüssig, wie man das am
besten umsetzen kann; vielleicht hat jemand einen Tip für mich.

Es geht um Produktdaten des Kunden, diese Daten haben verschiedene - ich
nenne es jetzt mal - Fremdschlüssel, um zum Beispiel die geographische
Region zu erfassen, und unterhalb derer beispielsweise das Land, in dem
das Produkt angeboten wird. Es gibt also einen FKRegion und einen
FKCountry für jeden Datensatz.
Nun sind nicht immer für alle Lànder Informationen vorhanden, manchmal
sind sie nur für die gesamte Region verfügbar oder es gibt "Detaildaten"
nur für einen Teil der Lànder der Region.

Die Anforderung ist nun, dass, wenn der Benutzer in der Anwendung den
Wert für ein Land veràndert, sich der Wert für die Region ebenfalls
àndern muss (aggregiert), sofern möglich. Ich habe hier zunàchst an
Trigger gedacht, die nach "oben" hin zusammenaddieren und entsprechende
Updates durchführen. Mir scheint aber, dass das, was ich wirklich suche,
OLAP cubes sind, mit denen man Werte in verschiedenen Dimensionen
aggregieren kann.

Meine Frage ist nun, bin ich mit OLAP auf dem richtigen Weg - vor allem,
kann man hiermit bereits aggregierte Daten aus der Datenbank übernehmen,
wenn keine Detaildaten vorliegen, wenn es z.B. nur Verkaufszahlen für
eine Region gibt statt für einzelne Lànder? Ist ein Cube immer ein cube
im Sinne von exakt gleich groß in allen Dimensionen, oder kann er
aufgrund der Verfügbarkeit der Daten für manche Datensàtze mehr
Informationen zur Verfügung stellen als für andere Datensàtze?

Danke & Grüße,

Roland
 

Lesen sie die antworten

#1 Moby
12/11/2008 - 10:57 | Warnen spam
On 11 Nov., 00:17, Roland Dick wrote:
Hallo NG,

ich habe ein neues Projekt bekommen, das unter anderem folgende
Anforderungen hat, und ich bin mir nicht ganz schlüssig, wie man das am
besten umsetzen kann; vielleicht hat jemand einen Tip für mich.

Es geht um Produktdaten des Kunden, diese Daten haben verschiedene - ich
nenne es jetzt mal - Fremdschlüssel, um zum Beispiel die geographische
Region zu erfassen, und unterhalb derer beispielsweise das Land, in dem
das Produkt angeboten wird. Es gibt also einen FKRegion und einen
FKCountry für jeden Datensatz.
Nun sind nicht immer für alle Lànder Informationen vorhanden, manchmal
sind sie nur für die gesamte Region verfügbar oder es gibt "Detaildaten"
nur für einen Teil der Lànder der Region.

Die Anforderung ist nun, dass, wenn der Benutzer in der Anwendung den
Wert für ein Land veràndert, sich der Wert für die Region ebenfalls
àndern muss (aggregiert), sofern möglich. Ich habe hier zunàchst an
Trigger gedacht, die nach "oben" hin zusammenaddieren und entsprechende
Updates durchführen. Mir scheint aber, dass das, was ich wirklich suche,
OLAP cubes sind, mit denen man Werte in verschiedenen Dimensionen
aggregieren kann.

Meine Frage ist nun, bin ich mit OLAP auf dem richtigen Weg - vor allem,
kann man hiermit bereits aggregierte Daten aus der Datenbank übernehmen,
wenn keine Detaildaten vorliegen, wenn es z.B. nur Verkaufszahlen für
eine Region gibt statt für einzelne Lànder? Ist ein Cube immer ein cube
im Sinne von exakt gleich groß in allen Dimensionen, oder kann er
aufgrund der Verfügbarkeit der Daten für manche Datensàtze mehr
Informationen zur Verfügung stellen als für andere Datensàtze?

Danke & Grüße,

Roland



hallo roland,

zum ersten punkt
in diesem fall spricht man von dimensionen - bei dir den kunden. diese
können sich in verschieden hierarchien wiederfinden. so auch in deiner
regionalen aufteilung. das hier keine eindeutige zuordnung vorliegt
ist nicht weiter tragisch und làsst sich mit den bordmitteln von den
analysis services abfangen. allerdings benötigst du hierfür ein paar
sonderlocken (s.u.).
du solltest dir beim dimensions und würfeldesign überlegen, ob der
kunde noch weitere fremdschlüssel hat und ob bzw. wie du diese jeweils
in bezug zu den kundendimension darstellen möchtest. das ist halt olap
design. gemeinsame oder getrennte dimensionen, parallele dimensionen
(hierarchies and level), n-m, etc.

zum zweiten punkt
die aggregation findet über die hierarchiedefinition in der dimension
statt. du kannst statt simpler addition auch andere berechnungen
vornehmen. aber zum einen hört sich das bei dir überhaupt nicht danach
an, zum anderen ist die lösung mit diesen "unàren operatoren" eher
langsamer.
wenn du also deine würfel mit write back funktion ausstattest können
die anwender auch in den würfel schreiben, bspw. bei einer planung.
dabei findet die aggregation in der regel online statt. weggeschrieben
wird allerdings nicht direkt in den würfel sondern in eine writeback
tabelle, die alle deltas aufnimmt. auch write back kann dein system
verlangsamen.

zum dritten punkt
hier kommen die sonderlocken, also wie schreibst du auf knotenelemente
(summenelemente), wenn keine detaildaten vorliegen. das geht mit dem
as bereits ab as2000 ganz gut. dort kannst du auf knotenelemente
schreiben, wenn diese daten relational vorliegen. allerdings nur, wenn
die dimension als parent child gepflegt ist. bei so unausgeglichenen
oder auch schràgen hierarchien, wie du sie beschreibst, ist parent
child eh eine sehr angenehme variante zur hierarchiepflege. inder
dimension kannst du dann weiterhin definieren, ob die eigenschaft
memberwithdata sichtbar sein soll oder nicht.
cube gleich cube - mit sicherheit nicht. vergleiche es mit einer
tabelle. die kannst du auch in ihren eigenschaften wie lànge, breite,
feldtypen etc nahezu definieren.

olap scheint mir alles in allem ein sehr empfehlenswerter weg für dein
problem zu sein.

gruss moby

Ähnliche fragen