2009-01-29 34 views
-1

我有一個XMLA查詢返回的國家和分析服務多維數據集作爲XML的最後處理日期,就像這樣:使用Integration Services中的XMLA查詢的結果

查詢:

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

結果:

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

我希望能夠在一個集成服務包使用這個XMLA查詢,分析和結果存儲在SQL Server數據庫表。但是似乎執行XMLA查詢的唯一任務是「Analysis Services Execute DDL」任務,該任務沒有返回查詢結果的方法,據我所知。

有沒有人有任何建議,如何實現這一目標?

回答

2

儘管可以通過SSIS中的各種機制(包括通過執行SQL任務)運行「常規」MDX/XMLA,但它始終會將其包裝在內部。是一種頂級方法,就像內部不能包裝一樣,因此也是問題所在。

你有兩個可能的解決方案:

  1. 總結使用關係數據庫內的OPENQUERY調用執行SQL任務中的XMLA。你可以像OPENQUERY()中的SELECT *那樣做,你可以很好地解析SQL Server中的XML結果集。
  2. 通過配置HTTP訪問(http://www.microsoft.com/technet/prodtechnol/sql/2005/httpasws.mspx)打開SSAS服務器,以便您可以將XMLA作爲Web服務調用發送。 SSIS中有一項Web服務任務,您可以使用它執行並消耗結果。

這兩個選項顯然都有一些缺點。

+0

選項2似乎是通過SSIS消耗Hyperion Essbase數據的最佳方式。您還可以使用腳本任務和腳本源代替Web服務任務,因爲Web服務任務不能很好地工作。 – 2012-01-13 21:29:48

1

對於查詢命令:

這工作對我非常好:

創建使用XMLA名稱空間問題的發現查詢腳本任務。一旦你收到響應解析xmla並添加到VB.NET Datatable並將解析的數據插入到sql表中。

1

您還可以在SSAS 2008中使用新的DMV語法或從ASSP中使用DMV功能在SSAS 2005中以表格格式返回此數據。

相關問題