ActionInvocation 列挙体
Action の呼び出し方法を定義します。
名前空間: Microsoft.AnalysisServices
アセンブリ: Microsoft.AnalysisServices (Microsoft.AnalysisServices.dll)
構文
'宣言
<GuidAttribute("B3C87F4E-DC00-449d-AADB-57A239DC0B1C")> _
Public Enumeration ActionInvocation
'使用
Dim instance As ActionInvocation
[GuidAttribute("B3C87F4E-DC00-449d-AADB-57A239DC0B1C")]
public enum ActionInvocation
[GuidAttribute(L"B3C87F4E-DC00-449d-AADB-57A239DC0B1C")]
public enum class ActionInvocation
[<GuidAttribute("B3C87F4E-DC00-449d-AADB-57A239DC0B1C")>]
type ActionInvocation
public enum ActionInvocation
メンバー
メンバー名 | 説明 | |
---|---|---|
Interactive | ユーザーがアクションを実行するときにアクションを呼び出します。 | |
OnOpen | キューブを開くときにアクションを呼び出します。 | |
Batch | バッチ コマンドからアクションを呼び出します。 |
説明
新規 :2006 年 7 月 17 日
SQL Server 2005 Analysis Services (SSAS) では、Interactive のみが実装されています。
SQL ServerAnalysis Services の今後のリリースでは、Batch および OnOpen メンバが実装される予定です。
ActionInvocation の未実装メンバを使用すると、MDSCHEMA_ACTIONS 行セット から空のテーブルが作成されます。
使用例
このセクションには、AMO を使用してアクションをセットアップするサンプルと、ADOMD.NET クライアントを使用してクライアント コードからアクションを取得するサンプルが記載されています。
次のサンプルは、AMO を使用してアクションをセットアップする方法を示しています。このサンプルでは、AMOAdventureWorks サンプル データベースに接続し、パラメータとして渡されるキューブが "Adventure Works" であることを前提としています。
アクションの呼び出しはキューブで Interactive として定義されることに注意してください。
コードは C# で記述されています。
#region Using directives
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Diagnostics;
using System.Globalization;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Data.Sql;
using Microsoft.AnalysisServices;
#endregion
private void CreateActions(Cube cube)
{
#region Adding a drillthrough action
//Create a Drillthrough action
DrillThroughAction action = new DrillThroughAction("Reseller Details", "Drillthrough Action");
//Define the Action
action.Invocation = ActionInvocation.Interactive;
action.Type = ActionType.DrillThrough;
action.TargetType = ActionTargetType.Cells;
action.Target = "MeasureGroupMeasures(\"Reseller Sales\")";
action.Caption = "DrillThrough...";
action.CaptionIsMdx = false;
//Adding Measure columns
MeasureBinding mb1 = new MeasureBinding();
mb1.MeasureID = "Reseller Sales Amount";
action.Columns.Add(mb1);
MeasureBinding mb2 = new MeasureBinding();
mb2.MeasureID = "Reseller Order Quantity";
action.Columns.Add(mb2);
MeasureBinding mb3 = new MeasureBinding();
mb3.MeasureID = "Reseller Unit Price";
action.Columns.Add(mb3);
//Adding Dimension Columns
CubeAttributeBinding cb1 = new CubeAttributeBinding();
cb1.CubeID = "Amo Adventure Works";
cb1.CubeDimensionID = "Reseller";
cb1.AttributeID = "Reseller";
cb1.Type = AttributeBindingType.All;
action.Columns.Add(cb1);
CubeAttributeBinding cb2 = new CubeAttributeBinding();
cb2.CubeID = "Amo Adventure Works";
cb2.CubeDimensionID = "Product";
cb2.AttributeID = "Product Name";
cb2.Type = AttributeBindingType.All;
action.Columns.Add(cb2);
//Add the defined action to the cube
cube.Actions.Add(action);
#endregion
}
次のサンプルは、ADOMD.NET クライアントを使用してアクションのサンプルが正しく定義されていることを検証する方法を示しています。
パラメータは次のように指定されています。
CATALOG_NAME= AmoAdventureWorks
CUBE_NAME=Adventure Works
COORDINATE=([Measures].[Reseller Order Quantity], [Product].[Category].&[3])
COORDINATE_TYPE=6
コードは C# で記述されています。ServerName はフォームの System.Windows.Forms.Textbox オブジェクトです。
#region Using directives
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using adoMdClient = Microsoft.AnalysisServices.AdomdClient;
#endregion
...
private enum COORDINATE_TYPE
{
MDACTION_COORDINATE_CUBE = 1,
MDACTION_COORDINATE_DIMENSION = 2,
MDACTION_COORDINATE_LEVEL = 3,
MDACTION_COORDINATE_MEMBER = 4,
MDACTION_COORDINATE_SET = 5,
MDACTION_COORDINATE_CELL = 6
}
...
private void readActionsUsingADOMDClient(String catalogName, String cubeName, String coordinate, COORDINATE_TYPE coordinateType)
{
adoMdClient.AdomdRestrictionCollection restrictions = new adoMdClient.AdomdRestrictionCollection();
restrictions.Add("CATALOG_NAME", catalogName);
restrictions.Add("CUBE_NAME", cubeName);
restrictions.Add("COORDINATE", coordinate);
restrictions.Add("COORDINATE_TYPE", (int)coordinateType);
foreach (adoMdClient.AdomdRestriction restriction in restrictions)
{
Debug.WriteLine(restriction.Name + "=" + restriction.Value);
}
using (adoMdClient.AdomdConnection cnxAmoAdventureworks = new adoMdClient.AdomdConnection())
{
if (serverName.Text.Length == 0)
{
cnxAmoAdventureworks.ConnectionString = "Data Source=localhost;Catalog=AMOAdventureworks";
}
else
{
cnxAmoAdventureworks.ConnectionString = "Data Source=" + serverName.Text + ";Catalog=AMOAdventureworks";
}
cnxAmoAdventureworks.Open();
DataTable actionsTable = cnxAmoAdventureworks.GetSchemaDataSet("MDSCHEMA_ACTIONS", restrictions).Tables[0];
Debug.WriteLine("Table [" + actionsTable.TableName + "] has " + actionsTable.Rows.Count.ToString() + " rows");
int j = 0;
foreach (DataRow actionRow in actionsTable.Rows)
{
for (int i = 0; i < actionRow.ItemArray.Length; i++)
{
Debug.WriteLine("[" + j.ToString().PadLeft(4) + "]\t" + actionsTable.Columns[i].ColumnName + ": " + actionRow.ItemArray[i].ToString());
}
j++;
}
}
}
コードの実行後、次の結果が表示されます。
Table [rowsetTable] has 1 rows
[ 0] CATALOG_NAME: AmoAdventureWorks
[ 0] SCHEMA_NAME:
[ 0] CUBE_NAME: Adventure Works
[ 0] ACTION_NAME: Reseller Details
[ 0] ACTION_TYPE: 256
[ 0] COORDINATE: ([Measures].[Reseller Order Quantity], [Product].[Category].&[3])
[ 0] COORDINATE_TYPE: 6
[ 0] ACTION_CAPTION: DrillThrough...
[ 0] DESCRIPTION:
[ 0] CONTENT: DRILLTHROUGH Select ([Measures].[Reseller Order Quantity], [Product].[Category].&[3]) on 0 From [Adventure Works] RETURN [Reseller Sales].[Reseller Sales Amount],[Reseller Sales].[Reseller Order Quantity],[Reseller Sales].[Reseller Unit Price],[$Reseller].[Reseller],[$Product].[Product Name]
[ 0] APPLICATION:
[ 0] INVOCATION: 1