none
Würfel mit einem T-SQL Statement als Basis RRS feed

  • Frage

  • Guten Tag,

    kann man das Ergebnis einer SQL-Abfrage, die das CUBE Statement beinhaltet in einen Würfel schreiben, so dass dieser WÜrfel dauerhaft besteht?

    Bsp.:

    USE AdventureWorks2008R2

    GO

    SELECT

     T.[Group] AS N'Region', T.CountryRegionCode AS N'Country'

    GO

    SELECT
     T.[Group] AS N'Region', T.CountryRegionCode AS N'Country'
    ,S.Name AS N'Store', H.SalesPersonID
    ,SUM(TotalDue) AS N'Total Sales'


    FROM
     Sales.Customer AS C

    INNER JOIN Sales.Store AS S
    ON C.StoreID  = S.BusinessEntityID
    INNER JOIN Sales.SalesTerritory AS T
    ON C.TerritoryID  = T.TerritoryID
    INNER JOIN Sales.SalesOrderHeader AS H
    ON C.CustomerID = H.CustomerID
    WHERE
     T.[Group] = N'Europe'
    AND T.CountryRegionCode IN(N'DE', N'FR')
    AND H.SalesPersonID IN(287, 288, 290)
    AND SUBSTRING(S.Name,1,4)IN(N'Vers', N'Spa ')

    GROUP
     BY CUBE(
    T.[Group], T.CountryRegionCode, S.Name, H.SalesPersonID)


    ORDER
     BY T.[Group], T.CountryRegionCode, S.Name, H.SalesPersonID;
    ,S.Name AS N'Store', H.SalesPersonID
    ,SUM(TotalDue) AS N'Total Sales'


    FROM

     Sales.Customer AS C
    INNER JOIN Sales.Store AS S
    ON C.StoreID  = S.BusinessEntityID
    INNER JOIN Sales.SalesTerritory AS T
    ON C.TerritoryID  = T.TerritoryID
    INNER JOIN Sales.SalesOrderHeader AS H
    ON C.CustomerID = H.CustomerID
    WHERE
     T.[Group] = N'Europe'
    AND T.CountryRegionCode IN(N'DE', N'FR')
    AND H.SalesPersonID IN(287, 288, 290)
    AND SUBSTRING(S.Name,1,4)IN(N'Vers', N'Spa ')


    GROUP BY CUBE(

    T.[Group], T.CountryRegionCode, S.Name, H.SalesPersonID)

    ORDER

     BY T.[Group], T.CountryRegionCode, S.Name, H.SalesPersonID;

    W.


    wksh

    Montag, 7. Juli 2014 08:04

Antworten

  • Hallo wksh,

    auf die Gefahr hin mich zu irren:

    Sie möchten wie bei einem SELECT...INTO ... aus einem Statement dieses Mal keine Tabelle erzeugen, sondern gleich einen SSAS-Cube?

    Leider hilft da auch das Wörtchen "CUBE" beim SQL-Statement nicht. SSAS ist eine eigene (Analyse-)Engine, die unter anderem mit MDX abgefragt und XML-A definiert werden kann.

    T-SQL wird in der Relationalen-(DB-)Engine benutzt. Man kann zwar mit einigen Tricks die Grenzen verwischen, dass wird Ihnen aber hier leider auch nicht helfen.

    Ansonsten sind die Links von Andreas schon gut, falls Sie etwas tiefer einsteigen wollen.
    Wenn ich Sie nun komplett missverstanden habe - mein Fehler. Trotzdem viel Erfolg.

    Ralf

    • Als Antwort markiert WKSH Dienstag, 8. Juli 2014 06:01
    Montag, 7. Juli 2014 21:28

Alle Antworten

  • Hallo

    Du verwendest sowohl das Wort "CUBE" - als Syntaxelement, als auch das Wort "Würfel".

    Was meinst Du mit Würfel? Einen "Analysis Services Cube"?

    Oder möchtest Du Deine Abfrage oder das Resultset dieser Abfrage einfach nur als Tabelle oder Sicht innerhalb SQL Server abspeichern?

    Bis hierhin mir ich mir noch nicht ganz klar, worauf Du hinausmöchtest


    Andreas Wolter (Blog | Twitter)
    MCM - Microsoft Certified Master SQL Server 2008
    MCSM - Microsoft Certified Solutions Master Data Platform, SQL Server 2012
    www.andreas-wolter.com | www.SarpedonQualityLab.com

    Montag, 7. Juli 2014 11:08
  • Lieber Andreas Wolter,

    deine Antwort verblüfft mich.

    Dass ein Würfel wohl ein CUBE ist, oder mindestens bezeichnen kann, ist dir bestimmt geläufig.

    Wenn du den Betreff liest sowie die einleitenden Zeilen meiner Frage dazu noch das SQL Statement, kann doch nicht so schwer zu verstehen sein, was gemeint ist.

    Das Script beinhaltet das SQL Element cube, das hast du prima erkannt.

    Ob man ein solches, wie das exemplarisch angeführte script benutzen kann, um einen Würfel ( oder SSAS Würfel ) zu bauen, das ist die Frage.

    So wie man ein SQL-Statement in eine Tabelle umleiten kann?


    wksh

    Montag, 7. Juli 2014 11:58
  • ...

    deine Antwort verblüfft mich.

    Dass ein Würfel wohl ein CUBE ist, oder mindestens bezeichnen kann, ist dir bestimmt geläufig.

    Wenn du den Betreff liest sowie die einleitenden Zeilen meiner Frage dazu noch das SQL Statement, kann doch nicht so schwer zu verstehen sein, was gemeint ist.

    Das Script beinhaltet das SQL Element cube, das hast du prima erkannt.

    ...

    Lieber wksh

    Leider ist ein Satz wie dieser: „kann man das Ergebnis einer SQL-Abfrage, die das CUBE Statement beinhaltet in einen Würfel schreiben, so dass dieser WÜrfel dauerhaft besteht?“

    ... alles andere als eindeutig. Sicherlich kann man Cube mit „Würfel“ übersetzen und tut das auch oft. Wirklich eindeutig wäre aber eben „Analysis Services Cube/Würfel“.
    Denn hier kommt ein seltsamer Satz hinzu „dass dieser Würfel dauerhaft besteht“ – das irritiert und man fragt sich. Warum?

    Wenn man in seinem Ad-HOC SQL bereits mit „Cube“ arbeitet, kann man daraus keinen AS-Cube erzeugen, dann die Zwischensummen „stören“.

    Ein Analysis Services Cube ERSETZT dieses „Cube-Statement“.

    Warum solte man das also tun wollen.

    Deswegen ist es verwirrend, und um korrekte Vorschläge zu machen, fragt man eben nach. Soviel sollter erlaubt sein.

    Nebenbei tun wir das hier alle freiwillig und schneiden es von unserer Freizeit ab, das sollte man vielleicht bedenken bei solch einem Kommentar.

     

    In Grob ist die Vorgehensweise:

    1. Bereitstellen einer Fakten und einer oder mehrerer Dimensionstabellen, vorzugsweise im Sternschema (und nicht normalisiert)
    2. Verwenden der Data  Tools oder BIDS zum Definieren der Dimensionen
    3. Anschließend Aufbau des Cubes unter Verwendung dieser Dimensionen und der Faktentabelle „in der Mitte“ – Die Abfrage wird dabei erzeugt

     

    Ich schlage vor, dass Sie sich einmal ausführlich mit „Analysis Services Cubes“ beschäftigen. Aus der Frage kann man erkennen, dass hier die Grundlagen fehlen - was ja nicht schlimm ist. Jeder fängt mal an. Jedenfalls ist das Ganze nicht in ein Zwei Sätzen erklärt.

    Hier Links zu kostenlosen Tutorials:

    http://msdn.microsoft.com/de-de/library/ms170208.aspx

    https://www.youtube.com/watch?v=ctUiHZHr-5M

     


    Andreas Wolter (Blog | Twitter)
    MCM - Microsoft Certified Master SQL Server 2008
    MCSM - Microsoft Certified Solutions Master Data Platform, SQL Server 2012
    www.andreas-wolter.com | www.SarpedonQualityLab.com

    Montag, 7. Juli 2014 12:30
  • Guten Tag,

    der Kunde möchte dass der Würfel dauerhaft besteht und kam auf die Frage, ob man eben aus einem SQL-Statement heraus Würfel erzeugen kann.

    Ihre Antwort ist ja reichlich blasiert und ich hoffe, dass Sie in Zukunft weniger Zeit haben meine Fragen zu beantworten.

    Ihnen fehlen Grundlagen ganz anderer Art, das haben Sie deutlich gemacht.

    Ich denke auf meinen Dank können Sie verzichten.

    mfg

    w.


    wksh

    Montag, 7. Juli 2014 12:43
  • Da kann ich nur noch mit dem Kopf schütteln.

    Zm Glück ist so ein Gebahren aus der Anonymität heraus in den Microsoft Foren eher die Ausnahme.

    Alles Gute


    Andreas Wolter (Blog | Twitter)
    MCM - Microsoft Certified Master SQL Server 2008
    MCSM - Microsoft Certified Solutions Master Data Platform, SQL Server 2012
    www.andreas-wolter.com | www.SarpedonQualityLab.com

    Montag, 7. Juli 2014 13:12
  • Glauben Sie im Ernst, dass man Menschen hilft, wenn man arrogant und aufgeblasen daher labert ohne das eigentliche Problem erfasst zu haben?

    Schütteln Sie ruhig den Kopf, wenn es hilft.

    Sie haben weder das Problem erfasst, noch eine adäquate Antwort gegeben.

    Lediglich Zeit haben Sie vertan, Ihre und meine.


    wksh

    Montag, 7. Juli 2014 14:03
  • Hallo wksh,

    auf die Gefahr hin mich zu irren:

    Sie möchten wie bei einem SELECT...INTO ... aus einem Statement dieses Mal keine Tabelle erzeugen, sondern gleich einen SSAS-Cube?

    Leider hilft da auch das Wörtchen "CUBE" beim SQL-Statement nicht. SSAS ist eine eigene (Analyse-)Engine, die unter anderem mit MDX abgefragt und XML-A definiert werden kann.

    T-SQL wird in der Relationalen-(DB-)Engine benutzt. Man kann zwar mit einigen Tricks die Grenzen verwischen, dass wird Ihnen aber hier leider auch nicht helfen.

    Ansonsten sind die Links von Andreas schon gut, falls Sie etwas tiefer einsteigen wollen.
    Wenn ich Sie nun komplett missverstanden habe - mein Fehler. Trotzdem viel Erfolg.

    Ralf

    • Als Antwort markiert WKSH Dienstag, 8. Juli 2014 06:01
    Montag, 7. Juli 2014 21:28
  • Guten Morgen Ralf,

    vielen Dank für Ihre Antwort.

    Sie haben richtig erkannt, was der Kunde wünscht.

    So wie man in SQL mit abgeleiteten Tabellen arbeiten kann, kam eben der Gedanke auf, man könne vielleicht auch aus einem SQL-Statement heraus einen cube erstellen und diese Idee, sofern sie funktionieren würde, ist genial. ( Zumindest für unsere Zwecke!)

    Dass uns hier nur MDX weiterhelfen kann, ist uns inzwischen auch aufgegangen.

    Vielen Dank!

    wksh


    wksh

    Dienstag, 8. Juli 2014 06:00