處理物件 (XMLA)
在 MicrosoftSQL ServerAnalysis Services 中,處理是將資料轉換成供商務分析的資訊之步驟或一系列的步驟。處理會因物件類型而異,但是處理永遠都是將資料轉換為資訊的一部分。
若要處理 Analysis Services 物件,您可以使用 Process 命令。Process 命令可以處理在 Analysis Services 執行個體上的下列物件:
Cube
資料庫
維度
量值群組
採礦模型
採礦結構
資料分割
若要控制物件的處理,Process 命令具有各種可以設定的屬性。Process 命令具有可控制以下動作的屬性:將完成多少處理、將處理哪些物件、是否使用非正規的繫結、如何處理錯誤以及如何管理回寫資料表。
指定處理選項
Process 的 Type 屬性會在處理物件時指定要使用的處理選項。如需有關處理選項的詳細資訊,請參閱<處理選項和設定>。
下表列出 Type 屬性的常數,以及各種可使用每個常數處理的物件。
Type 值 |
適用的物件 |
---|---|
ProcessFull |
Cube、資料庫、維度、量值群組、採礦模型、採礦結構、資料分割 |
ProcessAdd |
維度、資料分割 |
ProcessUpdate |
維度 |
ProcessIndexes |
維度、Cube、量值群組,磁碟分割 |
ProcessData |
維度、Cube、量值群組,磁碟分割 |
ProcessDefault |
Cube、資料庫、維度、量值群組、採礦模型、採礦結構、資料分割 |
ProcessClear |
Cube、資料庫、維度、量值群組、採礦模型、採礦結構、資料分割 |
ProcessStructure |
Cube、採礦結構 |
ProcessClearStructureOnly |
採礦結構 |
ProcessScriptCache |
Cube |
如需有關處理 Analysis Services 物件的詳細資訊,請參閱<處理 Analysis Services 物件>。
指定要處理的物件
Process 命令的 Object 屬性包含要處理的物件識別碼。在 Process 命令中只能指定一個物件,但是處理物件也會處理任何子系物件。例如,在 Cube 處理序中處理量值群組會處理該量值群組的所有資料分割,然而處理資料庫處理序則會處理資料庫包含的所有物件,包括 Cube、維度和採礦結構。
如果您將 Process 命令的 ProcessAffectedObjects 屬性設定為 True,則也會處理指定物件所影響的任何相關物件。例如,如果維度是使用 Process 命令中的 ProcessUpdate 處理選項,以累加方式更新,則如果 ProcessAffectedObjects 設定為 True,Analysis Services 也會處理任何由於加入或刪除成員而使其彙總無效的資料分割。在這種情況下,單一 Process 命令可以處理在 Analysis Services 執行個體上的多個物件,但是 Analysis Services 會決定除了在 Process 命令中指定的單一物件之外,還必須處理哪些物件。
不過,您可以使用 Batch 命令中的 Process 命令來同時處理多個物件 (例如維度)。相較於使用 ProcessAffectedObjects 屬性,批次作業在 Analysis Services 執行個體上依序或平行處理物件時,提供更細的控制層級,而且可讓您為較大的 Analysis Services 資料庫調整您的處理方法。如需有關執行批次作業的詳細資訊,請參閱<執行批次作業 (XMLA)>。
指定非正規繫結
如果 Batch 命令不包含 Process 命令,您可以在要處理物件的 Process 命令之 Bindings、DataSource 和 DataSourceView 屬性中,選擇性地指定非正規 (out-of-line) 繫結。非正規 (out-of-line) 繫結是資料來源、資料來源檢視以及其他物件的參考,其中繫結只會在 Process 命令執行期間存在,而且會覆寫任何與要處理的物件關聯的現有繫結。如果未指定非正規 (out-of-line) 繫結,會使用與要處理的物件目前關聯的繫結。
非正規 (out-of-line) 繫結用於在下列情況:
以累加方式處理資料分割,其中必須指定替代的事實資料表或是在現有事實資料表上的篩選,以確定不會計數資料列兩次。
使用 MicrosoftSQL ServerIntegration Services 中的資料流程工作,以便在處理維度、採礦模型或是資料分割時提供資料。
非正規繫結 (out-of-line) 是以 Analysis Services 指令碼語言 (ASSL) 的一部分來描述。如需有關在 ASSL 中非正規 (out-of-line) 繫結的詳細資訊,請參閱<資料來源和繫結 (Analysis Services - 多維度資料)>。
以累加方式更新資料分割
以累加方式更新已經處理的資料分割通常需要非正規繫結 (out-of-line),因為針對資料分割所指定的繫結,會參考已經在資料分割中彙總的事實資料表資料。當使用 Process 命令時,以累加方式更新已經處理的資料分割時,Analysis Services 會執行下列動作:
建立一個與要以累加方式更新的資料分割有相同結構的暫存資料分割。
使用在 Process 命令中指定的非正規繫結 (out-of-line) 來處理暫存資料分割。
以現有選取的資料分割,合併暫存資料分割。
如需有關使用 XML for Analysis (XMLA) 合併資料分割的詳細資訊,請參閱<合併資料分割 (XMLA)>。
處理在處理時發生的錯誤
Process 命令的 ErrorConfiguration 屬性,可讓您指定在處理物件時如何處理遇到的錯誤。例如,處理維度時,Analysis Services 在索引鍵屬性的索引鍵資料行中遇到重複的值。由於屬性索引鍵必須是唯一的,所以 Analysis Services 會捨棄重複的記錄。根據 ErrorConfiguration,Analysis Services 的 KeyDuplicate 屬性,可以:
忽略錯誤並繼續處理維度。
傳回訊息以說明 Analysis Services 遇到重複的索引鍵並繼續處理。
當 ErrorConfiguration 在 Process 命令期間提供選項時,有許多類似的狀況。
管理回寫資料表
如果 Process 命令遇到可寫入的資料分割,或是這類資料分割尚未完全處理的 Cube 或是量值群組,該資料分割可能不會有已經存在的回寫資料表。Process 命令的 WritebackTableCreation 屬性會決定 Analysis Services 是否應該建立回寫資料表。
範例
說明
下列範例會完整地處理 Adventure Works DW 範例 Analysis Services 資料庫。
程式碼
<Process xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>Adventure Works DW</DatabaseID>
</Object>
<Type>ProcessFull</Type>
<WriteBackTableCreation>UseExisting</WriteBackTableCreation>
</Process>
說明
下列範例以累加方式處理 Adventure Works DW 範例 Analysis Services 資料庫中,Adventure Works DW Cube 的 Internet Sales 量值群組中之 Internet_Sales_2004 資料分割。Process 命令使用在 Process 命令的 Bindings 屬性中之非正規 (out-of-line) 查詢繫結,以擷取事實資料表資料列,從而產生要加入資料分割的彙總,來將訂購日期晚於 2004 年 12 月 31 日的彙總加入資料分割。
程式碼
<Process ProcessAffectedObjects="true" xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>Adventure Works DW</DatabaseID>
<CubeID>Adventure Works DW</CubeID>
<MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
<PartitionID>Internet_Sales_2004</PartitionID>
</Object>
<Bindings>
<Binding>
<DatabaseID>Adventure Works DW</DatabaseID>
<CubeID>Adventure Works DW</CubeID>
<MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
<PartitionID>Internet_Sales_2004</PartitionID>
<Source xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="QueryBinding">
<DataSourceID>Adventure Works DW</DataSourceID>
<QueryDefinition>
SELECT
[dbo].[FactInternetSales].[ProductKey],
[dbo].[FactInternetSales].[OrderDateKey],
[dbo].[FactInternetSales].[DueDateKey],
[dbo].[FactInternetSales].[ShipDateKey],
[dbo].[FactInternetSales].[CustomerKey],
[dbo].[FactInternetSales].[PromotionKey],
[dbo].[FactInternetSales].[CurrencyKey],
[dbo].[FactInternetSales].[SalesTerritoryKey],
[dbo].[FactInternetSales].[SalesOrderNumber],
[dbo].[FactInternetSales].[SalesOrderLineNumber],
[dbo].[FactInternetSales].[RevisionNumber],
[dbo].[FactInternetSales].[OrderQuantity],
[dbo].[FactInternetSales].[UnitPrice],
[dbo].[FactInternetSales].[ExtendedAmount],
[dbo].[FactInternetSales].[UnitPriceDiscountPct],
[dbo].[FactInternetSales].[DiscountAmount],
[dbo].[FactInternetSales].[ProductStandardCost],
[dbo].[FactInternetSales].[TotalProductCost],
[dbo].[FactInternetSales].[SalesAmount],
[dbo].[FactInternetSales].[TaxAmt],
[dbo].[FactInternetSales].[Freight],
[dbo].[FactInternetSales].[CarrierTrackingNumber],
[dbo].[FactInternetSales].[CustomerPONumber]
FROM [dbo].[FactInternetSales]
WHERE OrderDateKey > '1280'
</QueryDefinition>
</Source>
</Binding>
</Bindings>
<Type>ProcessAdd</Type>
<WriteBackTableCreation>UseExisting</WriteBackTableCreation>
</Process>