Ich habe jedes Mal ein Problem, wenn ich mich entscheide, einen Würfel zu bauen, und ich habe noch keinen Weg gefunden, es zu überwinden.
Die Frage ist, wie der Benutzer eine Reihe von Dingen automatisch definieren kann, ohne sie in der Dimension fest codieren zu müssen. Ich werde mein Problem an einem Beispiel erläutern.
Ich habe eine Tabelle namens Kunden :
Dies sind die Daten in der Tabelle:
Ich möchte die Daten in einem Pivot-Stil anzeigen und das Gehalt und das Alter in definierten Bereichen wie folgt gruppieren :
Ich habe dieses Skript geschrieben und die Bereiche definiert:
SELECT [CustId]
,[CustName]
,[Age]
,[Salary]
,[SalaryRange] = case
when cast(salary as float) <= 500 then
'0 - 500'
when cast(salary as float) between 501 and 1000 then
'501 - 1000'
when cast(salary as float) between 1001 and 2000 then
'1001 - 2000'
when cast(salary as float) > 2000 then
'2001+'
end,
[AgeRange] = case
when cast(age as float) < 15 then
'below 15'
when cast(age as float) between 15 and 19 then
'15 - 19'
when cast(age as float) between 20 and 29 then
'20 - 29'
when cast(age as float) between 30 and 39 then
'30 - 39'
when cast(age as float) >= 40 then
'40+'
end
FROM [Customers]
GO
Meine Bereiche sind fest codiert und definiert. Wenn ich die Daten nach Excel kopiere und sie in einer Pivot-Tabelle ansehe, sieht das wie folgt aus:
Mein Problem ist, dass ich einen Cube erstellen möchte, indem ich die Customers- Tabelle in eine Faktentabelle umwandle und 2 Dimensionstabellen SalaryDim & AgeDim erstelle .
Die SalaryDim- Tabelle enthält 2 Spalten ( SalaryKey, SalaryRange ) und die AgeDim- Tabelle ist ähnlich ( ageKey, AgeRange ). Meine Kundenfaktentabelle enthält:
Customer
[CustId]
[CustName]
[AgeKey] --> foreign Key to AgeDim
[Salarykey] --> foreign Key to SalaryDim
Ich muss noch meine Bereiche innerhalb dieser Dimensionen definieren. Jedes Mal, wenn ich einen Excel-Pivot mit meinem Cube verbinde, werden nur diese fest codierten Bereiche angezeigt.
Meine Frage ist, wie man Bereiche dynamisch direkt aus der Pivot-Tabelle heraus definiert, ohne die Bereichsdimensionen wie AgeDim und SalaryDim zu erstellen . Ich möchte nicht nur an den in der Dimension definierten Bereichen festhalten.
Der definierte Bereich ist '0-25', '26 -30 ', '31 - 50'. Ich möchte es möglicherweise in "0-20", "21 -31", "32 -42" usw. ändern, und Benutzer fordern jedes Mal andere Bereiche an.
Jedes Mal, wenn ich es ändere, muss ich die Dimension ändern. Wie kann ich diesen Prozess verbessern?
Es wäre großartig, eine Lösung im Cube implementieren zu lassen, damit jedes BI-Client-Tool, das eine Verbindung zum Cube herstellt, die Bereiche definieren kann, aber es würde mir nichts ausmachen, wenn es nur eine gute Möglichkeit gibt, Excel zu verwenden.
quelle
Mit der MDX-Sprache können Sie benutzerdefinierte Member erstellen, die die Bereiche definieren. Der folgende Ausdruck definiert ein berechnetes Mitglied, das alle Gehälter zwischen 501 und 1000 darstellt:
Sie können dasselbe mit der Altersdimension tun:
In diesem Artikel wird erläutert, wie diese berechneten Elemente in Excel hinzugefügt werden (siehe Abschnitt ' Berechnete Elemente / Kennzahlen und Gruppen in Excel 2007 OLAP PivotTables erstellen '). Leider gibt es in Excel keine Benutzeroberfläche dafür. Sie können jedoch BI-Clients finden, die die MDX- Sprache unterstützen, mit denen Sie Ihre Bereiche in den Abfragen definieren können.
quelle
Salary
und befindenAge
.