オブジェクトとオブジェクトの特性
Analysis Services スクリプト言語 (ASSL) のオブジェクトは、オブジェクト グループ、継承、名前付け、展開、および処理に関して特定のガイドラインに従います。
オブジェクト グループ
すべての Microsoft SQL Server 2005 Analysis Services (SSAS) オブジェクトには XML 表現があります。オブジェクトは 2 つのグループに分けられます。
主要なオブジェクト
主要なオブジェクトは、単独で作成、変更、および削除を行うことができます。主要なオブジェクトは次のとおりです。- サーバー
- データベース
- ディメンション
- キューブ
- メジャー グループ
- パーティション
- 分析観点
- マイニング モデル
- ロール
- サーバーまたはデータベースに関連付けられているコマンド
- データ ソース
主要なオブジェクトには、その履歴と状態を追跡するための次のプロパティがあります。
- CreatedTimestamp
- LastSchemaUpdate
- LastProcessed (必要な場合)
メモ : オブジェクトを主要なオブジェクトとして分類すると、Analysis Services のインスタンスによるオブジェクトの処理方法と、オブジェクト定義言語でのオブジェクトの処理方法に影響を与えます。ただし、この分類によって、Analysis Services 管理ツールおよび開発ツールでこれらのオブジェクトを単独作成、修正、または削除できることが保証されるわけではありません。
マイナ オブジェクト
マイナ オブジェクトは、主要な親オブジェクトの作成、変更、または削除の一部としてのみ、作成、変更、または削除を行うことができます。マイナ オブジェクトは次のとおりです。- 階層とレベル
- 属性
- メジャー
- マイニング モデル列
- キューブに関連付けられているコマンド
- 集計
オブジェクトの継承
ASSL オブジェクト モデルには繰り返される多くの要素グループがあります。たとえば、"Dimensions contain Hierarchies" という要素グループでは要素のディメンション階層を定義します。Cubes と MeasureGroups のどちらにも、"Dimensions contain Hierarchies" という要素グループがあります。
明示的にオーバーライドされない限り、要素はこれらの繰り返される要素グループの詳細を上位レベルから継承します。たとえば、CubeDimension の Translations は、先祖要素である Cube の Translations と同じです。
上位レベルのオブジェクトから継承されるプロパティを明示的にオーバーライドするには、オブジェクトで上位レベルのオブジェクトの構造全体およびプロパティを明示的に繰り返す必要はありません。オブジェクトで明示的に記述する必要があるプロパティは、オーバーライドするプロパティだけです。たとえば、CubeDimension では、Cube で無効にする必要がある場合、表示と非表示を切り替える必要がある場合、または一部の Level 詳細が Dimension レベルで指定されない場合にのみ、Hierarchies を一覧表示します。
オブジェクトで指定される一部のプロパティによって、子オブジェクトや子孫オブジェクトの同じプロパティの既定値が指定されます。たとえば、Cube.StorageMode は Partition.StorageMode の既定値を指定します。ASSL では、継承される既定値に Decision Support オブジェクト (DSO) 8.0 で使用されるのと同じルールを適用します。継承される既定値のルールは次のとおりです。
- 子オブジェクトのプロパティが XML で NULL の場合、そのプロパティの既定値は継承された値になります。ただし、サーバーから値をクエリする場合は、XML 要素の NULL 値が返されます。
- 子オブジェクトのプロパティが子オブジェクトで直接設定されたか、または継承されたかをプログラムで判断することはできません。
オブジェクトの名前、ID、および参照
一般に、すべての主要なオブジェクトには次のプロパティがあります。
- Name 通常、兄弟オブジェクトの名前は親コレクションのスコープ内で一意です。たとえば、2 つの異なる Database オブジェクトが、同じ Dimension 名を持つ場合がありますが、Dimension 名は各 Database 内で一意です。このルールの例外については、後半で説明します。たとえば、Measure 名は Cube レベルで一意である必要がありますが、親 MeasureGroup のレベルでは一意である必要はありません。
- ID Name プロパティに適用される一意性の制限は、ID プロパティにも適用されます。また、ID プロパティは変更できません。ID プロパティは作成時にユーザーまたはアプリケーションによって割り当てられるか、サーバーによって自動的に割り当てられます (プロパティが指定されていない場合)。サーバーによって ID プロパティが割り当てられると、ID プロパティはオブジェクトの初期名に設定されます。
- Description
オブジェクトの参照
オブジェクトは ID プロパティによって参照されます。ID プロパティの名前付け規則では、対象の型に基づく名前で始め、"ID" というサフィックスを追加します。場合によっては、オブジェクトが果たすロールに関する追加情報を示すプレフィックスを追加します。たとえば、オブジェクトが Cube で使用される既定のメジャーであるとします。オブジェクトの対象の型は Measure です。この対象の型の名前に、"ID" サフィックスと "Default" プレフィックスを追加します。作成された ID プロパティ名は、次のコードのように DefaultMeasureID になります。
<Cube>
<DefaultMeasureID>Amount</DefaultMeasureID>
…
<Cube>
複数の ID から構成される修飾名が必要な場合 (たとえば、CubeID と MeasureID の両方が別の Cube のメジャーを参照する場合)、ID 要素のセットを含めるために外部要素が取り込まれます。
参照の例外
1 つのドット (.) を含む DataSource 参照は、現在の OLAP サーバーの現在のデータベースを参照します。たとえば、次の XML フラグメントでは、現在の OLAP サーバー インスタンスの現在の Database を参照します。
<DataSourceID>.</DataSourceID>
DataSourceView (DSV) 要素の参照は、参照ルールの例外です。Microsoft .NET Framework の DataSet オブジェクトでは DSV のスキーマを記述します。スキーマの DSV オブジェクトには、変更不可の ID ではなく Name があります。そのため、DSV オブジェクトの参照では、識別メカニズムとして Name を使用する必要があります。たとえば、ColumnBinding.TableID という参照には、ID が含まれていません。代わりに、この参照には適切なテーブルの Name が含まれています。
名前付けガイドライン
ASSL では、大文字と小文字およびスペースに関して、DSO 8.0 と同じルールを Name プロパティと ID プロパティに適用します。
- Name と ID の一意性の確認では、大文字と小文字が区別されません。そのため、同じデータベース内に "sales" と "Sales" という 2 つ Cube が存在することはできません。
- Name または ID プロパティの文字列内にスペースを含めることはできますが、先頭および末尾に含めることはできません。先頭および末尾にあるスペースは暗黙的に切り捨てられます。このルールは、オブジェクトの Name と ID、および Name と ID を参照する要素の値に適用されます。
Name および ID プロパティには、次のルールも適用されます。これらのルールは DSO 8.0 のルールと同様です。
- 使用できる文字数は最大 100 文字です。
- 識別子の最初の文字に関する特別な要件はありません。最初の文字には有効な任意の文字を使用できます。
次の予約済みの名前は使用できません。
- AUX
- CLOCK$
- COM1 ~ COM9 (COM1、COM2、COM3 など)
- CON
- LPT1 ~ LPT9 (LPT1、LPT2、LPT3 など)
- NUL
- PRN
- NULL は XML 内の文字列の文字として許容されません。
次の表では、特定のオブジェクトで無効な文字を示します。
オブジェクト | 無効な文字 |
---|---|
Server |
名前は、コンピュータ名の規則に従う必要があります。IP アドレスは無効です。 |
DataSource |
: / \ * | ? " () [] {} <> |
Level または Attribute |
. , ; ' ` : / \ * | ? " & % $ ! + = [] {} < > |
Dimension または Hierarchy |
.,, ; ' ` : / \ * | ? " & % $ ! + = () [] {} <,> |
他のすべてのオブジェクト |
. , ; ' ` : / \ * | ? " & % $ ! + = () [] {} < > |
名前のローカライズ
クライアントに表示されるオブジェクトのキャプション (たとえば、Dimension、階層、Level など) は、さまざまな言語にローカライズできます。コマンドによって定義されるオブジェクトのキャプション (たとえば、計算されるメジャーや名前付きセットなど) は、オブジェクトの MDX 定義の一部として指定されます。
また、属性のバインドを使用すると、属性名の異なるソース (異なるソース列など) をさまざまな言語について指定できます。
オブジェクトの名前をローカライズすることはできません。
オブジェクトの展開
ObjectExpansion 制限は、サーバーから返される ASSL XML をどの程度展開するかを制御するために使用できます。次の表には、この制限のオプションを示します。
列挙値 | <Alter> に対する許可 | 説明 |
---|---|---|
ReferenceOnly |
不可 |
要求されたオブジェクトおよび含まれているすべての主要なオブジェクトの名前、ID、およびタイムスタンプだけを再帰的に返します。 |
ObjectProperties |
可 |
要求されたオブジェクトと含まれいているマイナ オブジェクトを展開し、含まれている主要なオブジェクトは返しません。 |
ExpandObject |
不可 |
ObjectProperties と同じですが、含まれる主要なオブジェクトの名前、ID、およびタイムスタンプも返します。 |
ExpandFull |
可 |
要求されたオブジェクトと含まれているすべてのオブジェクトを再帰的に完全に展開します。 |
この ASSL 参照セクションでは ExpandFull 表現を記述します。他のすべての ObjectExpansion レベルがこのレベルから派生します。
オブジェクトの処理
ASSL には、Analysis Services インスタンスから読み取ることはできても、そのインスタンスにコマンド スクリプトが送信されるときに省略される読み取り専用の要素またはプロパティ (LastProcessed など) があります。Analysis Services では、読み取り専用の要素の変更された値を無視し、警告やエラーを返しません。
また、Analysis Services では、不適切なプロパティや無関係なプロパティは無視し、検証エラーを返しません。たとえば、Y 要素に特定の値がある場合、X 要素は存在する必要があります。Analysis Services インスタンスでは、X 要素を無視し、Y 要素の値に対して X 要素を検証しません。