Pergunta

Eu tenho uma consulta XMLA que retorna a data Estado e Última transformados de um cubo Analysis Services como XML, assim:

Inquérito:

<Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
  <RequestType>DISCOVER_XML_METADATA</RequestType>
  <Restrictions >
    <RestrictionList xmlns="urn:schemas-microsoft-com:xml-analysis">
      <DatabaseID>SSAS - Premium and Claims V2</DatabaseID>
      <CubeID>PDW04 1</CubeID>
      <ObjectExpansion>ReferenceOnly</ObjectExpansion>
    </RestrictionList>
  </Restrictions>
  <Properties />
</Discover>

Resultado:

<return xmlns="urn:schemas-microsoft-com:xml-analysis">
  <root xmlns="urn:schemas-microsoft-com:xml-analysis:rowset" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:schema targetNamespace="urn:schemas-microsoft-com:xml-analysis:rowset" xmlns:sql="urn:schemas-microsoft-com:xml-sql" elementFormDefault="qualified">
      <xsd:element name="root">
        <xsd:complexType>
          <xsd:sequence minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="row" type="row" />
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:simpleType name="uuid">
        <xsd:restriction base="xsd:string">
          <xsd:pattern value="[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}" />
        </xsd:restriction>
      </xsd:simpleType>
      <xsd:complexType name="xmlDocument">
        <xsd:sequence>
          <xsd:any />
        </xsd:sequence>
      </xsd:complexType>
      <xsd:complexType name="row">
        <xsd:sequence>
          <xsd:element sql:field="METADATA" name="METADATA" type="xmlDocument" />
        </xsd:sequence>
      </xsd:complexType>
    </xsd:schema>
    <row>
      <xars:METADATA xmlns="http://schemas.microsoft.com/analysisservices/2003/engine" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:xars="urn:schemas-microsoft-com:xml-analysis:rowset">
        <Cube>
          <Name>Premium</Name>
          <ID>PDW04 1</ID>
          <CreatedTimestamp>2008-11-23T22:31:06</CreatedTimestamp>
          <LastSchemaUpdate>2009-01-22T00:50:13</LastSchemaUpdate>
          <LastProcessed>2009-01-07T22:28:34</LastProcessed>
          <State>Processed</State>
        </Cube>
      </xars:METADATA>
    </row>
  </root>
</return>

Eu gostaria de ser capaz de usar essa consulta XMLA em um pacote Integration Services, analisar e armazenar o resultado em uma tabela de banco de dados SQL Server. No entanto as únicas tarefas que parece executar uma consulta XMLA é a tarefa "Analysis Services Executar DDL", que não tem um método de retornar resultados da consulta, tanto quanto eu posso dizer.

Alguém tem alguma sugestão sobre como outra pessoa para conseguir isso?

Foi útil?

Solução

Enquanto você pode executar "regular" MDX / XMLA através de vários mecanismos no SSIS, inclusive através da tarefa Execute SQL, será sempre envolvê-la dentro. é um método de nível superior como e não pode ser acondicionada dentro, daí o problema.

Você tem duas soluções possíveis:

  1. Envolva seu XMLA dentro de uma tarefa Execute SQL usando uma chamada OPENQUERY dentro do seu banco de dados relacional. Você faria algo como SELECT * de OPENQUERY () e você pode realmente fazer um bom trabalho de analisar o conjunto de resultados XML dentro do SQL Server.
  2. Abrir-se-lhe SSAS servidores configurando o acesso HTTP ( http: / /www.microsoft.com/technet/prodtechnol/sql/2005/httpasws.mspx ), assim você pode enviar XMLA como uma chamada de serviço web. Há uma tarefa de serviço web no SSIS que você pode usar para executar o seu e consumir os resultados.

Ambas as opções, obviamente, tem alguma desvantagem.

Outras dicas

Para comandos Descubra:

Isso funciona muito bem para mim:

Criar uma tarefa script usando nomes XMLA problema de espaço a consulta descobrir. Depois de receber a resposta analisar o xmla e adicionar a VB.NET tabela de dados e inserir os dados analisados ??na tabela sql.

Você também pode usar a nova sintaxe DMV no SSAS 2008 ou a função DMV de ASSP no SSAS 2005 para retornar esses dados em um formato tabular.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top