2013-09-05 12 views
5

Sono nuovo a lavorare con Business Intelligence/Analysis Services e query MDX. Sto sviluppando un'applicazione web che estrae/incorpora i report da un server di report (i report SSRS si basano su questi dati del cubo), tuttavia il risultato è lento e l'aspetto risultante è privo di IMO. Sto anche generando widget grafici usando lo stesso metodo (sembra ancora peggio).JSON Risultato da SSAS Cube

Per trovare una nuova soluzione un'attività alla volta, ho esplorato la possibilità di generare i widget (barra, torta, chat di linea, ecc.) Con alcune librerie javascript SVG davvero carine. Tuttavia, queste librerie stanno volendo fornire i dati in JSON o XML (anche altri formati supportati come CSV ...).

Vorrei interrompere l'utilizzo corrente dei widget di reporting e tentare di eseguire il rendering dei miei grafici in base a questi dati del cubo. Tuttavia, sono in perdita per la raccolta dei dati nel formato appropriato. Preferirei che JSON salvasse le dimensioni del file, ma l'XML sarà sufficiente. Eventuali suggerimenti?

risposta

5

In effetti, a basso livello, tutti i risultati restituiti da SSAS sono in XMLA, che è XML. Questo XMl contiene molte informazioni sui metadati che probabilmente non ti servono.

per vedere il risultato di alcune istruzioni MDX, è possibile eseguire una query XMLA in Management Studio come segue: Aprire una finestra XMLA e inserisci il tuo MDX racchiuso in un XML Statement elemento come questo:

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

Ciò restituirà il risultato come XML nel cosiddetto formato multidimensionale. C'è anche un formato tabulare che è più simile a un set di risultati relazionali. È possibile ottenere che utilizzando la sintassi completa:

<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> 

Se si cambia il <Format>Tabular</Format> a <Format>Multidimensional</Format>, si dovrebbe ottenere lo stesso risultato come nel mio primo esempio di codice. In effetti, Management Studio circonda solo il primo codice che ho mostrato sopra da qualche XML, quindi è simile al mio secondo esempio di codice, al fine di farvi risparmiare un po 'di digitazione.

Alcune osservazioni:

  • Nel codice MDX, si dovrà fuggire alcuni personaggi come & e < per effettuare la richiesta XML valido.
  • La parte <Catalog>Adventure Works DW 2008</Catalog> nel codice completo è il nome del catalogo, alias database, a cui si accede.
  • La documentatiion della sintassi XMLA può essere trovato qui: http://msdn.microsoft.com/en-us/library/ms186691.aspx
+0

Grazie per la risposta dettagliata, avrò la possibilità di guardare in questo presto. Ho fatto ulteriori ricerche e mi piacerebbe sapere: se sono interessante nel restituire l'XML all'interno di un'applicazione web, ADOMD.NET sarà quello che sto cercando? – scniro

+0

Se si sta codificando con .net, ADOMD.NET sarebbe un'interfaccia da utilizzare. – FrankPl