共用方式為


資料分割表示法 (表格式)

您可以基於作業目的,將資料表分割成不同的資料列子集 (結合在一起時就會構成資料表)。其中每個子集都是資料表的資料分割。

資料分割表示法

就 AMO 物件而言,資料分割表示法與 Partition 之間擁有一對一對應關聯性,而且不需要其他主要 AMO 物件。

AMO 中的資料分割

當使用 AMO 管理資料分割時,您需要尋找可代表表格式模型資料表的量值群組,並從該處工作。

下列程式碼片段示範如何將資料分割加入至現有的表格式模型資料表。

        private void AddPartition(
                             AMO.Cube modelCube
                          ,  AMO.DataSource newDatasource
                          ,  string mgName
                          ,  string newPartitionName
                          , string partitionSelectStatement
                          , Boolean processPartition
                     )
        {
            mgName = mgName.Trim();
            newPartitionName = newPartitionName.Trim();
            partitionSelectStatement = partitionSelectStatement.Trim();
            //Validate Input
            if (string.IsNullOrEmpty(newPartitionName) || string.IsNullOrWhiteSpace(newPartitionName))
            {
                MessageBox.Show(String.Format("Partition Name cannot be empty or blank"), "AMO to Tabular message", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (modelCube.MeasureGroups[mgName].Partitions.ContainsName(newPartitionName))
            {
                MessageBox.Show(String.Format("Partition Name already defined. Duplicated names are not allowed"), "AMO to Tabular message", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (string.IsNullOrEmpty(partitionSelectStatement) || string.IsNullOrWhiteSpace(partitionSelectStatement))
            {
                MessageBox.Show(String.Format("Select statement cannot be empty or blank"), "AMO to Tabular message", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            //Input validated
            string partitionID = newPartitionName; //Using partition name as the ID
            AMO.Partition currentPartition = new AMO.Partition(partitionID, partitionID);
            currentPartition.StorageMode = AMO.StorageMode.InMemory;
            currentPartition.ProcessingMode = AMO.ProcessingMode.Regular;
            currentPartition.Source = new AMO.QueryBinding(newDatasource.ID, partitionSelectStatement);
            modelCube.MeasureGroups[mgName].Partitions.Add(currentPartition);
            try
            {
                modelCube.Update(AMO.UpdateOptions.ExpandFull, AMO.UpdateMode.UpdateOrCreate);
                if (processPartition)
                {
                    modelCube.MeasureGroups[mgName].Partitions[partitionID].Process(AMO.ProcessType.ProcessFull);
                    MessageBox.Show(String.Format("Partition successfully processed."), "AMO to Tabular message", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }

            }
            catch (AMO.AmoException amoXp)
            {
                MessageBox.Show(String.Format("AMO exception accessing the server.\nError message: {0}", amoXp.Message), "AMO to Tabular message", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            catch (Exception)
            {
                throw;
            }
        }

AMO2Tabular 範例

不過,若要了解如何使用 AMO 建立及操作資料分割表示法,請參閱 AMO 對表格式範例的原始程式碼。 您可以在 Codeplex 上取得此範例。 有關此程式碼的重要注意事項:此程式碼的提供目的只是為了支援這裡所說明的邏輯概念,不應該用於實際執行環境,也不應該用於教學以外的其他用途。