2013-09-05 26 views
5

Jestem nowy w pracy z usługami Business Intelligence/Analysis Services i MDX. Zajmuję się tworzeniem aplikacji internetowej, która pobiera/osadza raporty z serwera raportów (raporty SSRS opierają się na danych kostki), jednak wynik jest powolny, a wynikowy wygląd jest pozbawiony IMO. Generuję też widżety wykresów przy użyciu tej samej metody (wygląda jeszcze gorzej).Wynik JSON z kostki SSAS

Aby znaleźć nowe rozwiązanie po jednym zadaniu, zbadałem możliwość generowania widżetów (pasek, ciasto, liniowe rozmowy itp.) Z kilkoma naprawdę ładnymi bibliotekami SVN javascript. Jednak te biblioteki chcą dostarczać dane w JSON lub XML (niektóre inne obsługiwane formaty, takie jak CSV ...).

Chciałbym zrezygnować z bieżącego korzystania z widgetów raportowania i spróbować renderować własne wykresy na podstawie tych danych kostki. Jednak nie jestem w stanie zebrać danych w odpowiednim formacie. Wolałbym JSON, aby zapisać rozmiar pliku, ale wystarczy XML. Jakieś sugestie?

Odpowiedz

5

W rzeczywistości niski poziom, wszystkie wyniki, które są zwracane z SSAS są w XMLA, czyli XML. Ten XMl zawiera wiele informacji o metadanych, których prawdopodobnie nie potrzebujesz.

Aby zobaczyć wyniki niektórych stwierdzeń MDX, można uruchomić kwerendy XMLA w Management Studio następująco: otworzyć okno XMLA i wprowadź swoją MDX zamknięty w XML Statement elementem tak:

<Statement> 
    select [Date].[Calendar].[Calendar Year].Members 
     on columns, 
     [Sales Territory].[Sales Territory Country].Members 
     on rows 
    from [Adventure Works] 
</Statement> 

To zwróci wynik jako XML w tak zwanym formacie wielowymiarowym. Istnieje również format tabelaryczny, który przypomina bardziej relacyjny zestaw wyników. Można dostać że stosując pełną składnię:

<Execute xmlns="urn:schemas-microsoft-com:xml-analysis"> 
    <Command> 
    <Statement> 
     select [Date].[Calendar].[Calendar Year].Members 
      on columns, 
      [Sales Territory].[Sales Territory Country].Members 
      on rows 
     from [Adventure Works] 
    </Statement> 
    </Command> 
    <Properties> 
    <PropertyList> 
     <Catalog>Adventure Works DW 2008</Catalog> 
     <Format>Tabular</Format> 
    </PropertyList> 
    </Properties> 
</Execute> 

Jeżeli zmienisz <Format>Tabular</Format> do <Format>Multidimensional</Format>, należy uzyskać ten sam wynik, jak w mojej pierwszej próbki kodu. W rzeczywistości Management Studio otacza pierwszy kod, który pokazałem powyżej przez jakiś XML, dzięki czemu wygląda jak mój drugi przykład kodu, aby zaoszczędzić trochę pisania.

Kilka uwag:

  • W kodzie MDX, trzeba będzie uciec niektóre postacie jak & i < aby żądania prawidłowy XML.
  • Częścią kompletnego kodu jest nazwa katalogu, czyli baza danych, do której można uzyskać dostęp.
  • documentatiion składni XMLA można znaleźć tutaj: http://msdn.microsoft.com/en-us/library/ms186691.aspx
+0

Dziękuję za szczegółową odpowiedź, będę miał okazję zajrzeć do tego szybko. Robiłem dalsze badania i chciałbym wiedzieć: jeśli interesuje mnie zwrócenie kodu XML w aplikacji internetowej, czy ADOMD.NET będzie tym, czego szukam? – scniro

+0

Jeśli kodujesz z .net, ADOMD.NET będzie interfejsem do użycia. – FrankPl