次の方法で共有


メンバの挿入、更新、および削除 (XMLA)

XML for Analysis (XMLA) の InsertUpdate、および Drop コマンドをそれぞれ使用すると、書き込み許可ディメンションのメンバの挿入、更新、および削除を行えます。書き込み許可ディメンションの詳細については、「書き込み許可ディメンション」を参照してください。

新しいメンバの挿入

Insert コマンドは、書き込み許可ディメンション内の指定された属性に新しいメンバを挿入します。

Insert コマンドを作成する前に、挿入する新しいメンバに関する以下の情報を確認しておく必要があります。

  • 新しいメンバを挿入するディメンション。

  • 新しいメンバを挿入するディメンションの属性。

  • 新しいメンバの名前。ある場合は、名前の翻訳も含みます。

  • 新しいメンバのキー。属性で複合キーを使用する場合は、キーに複数の値が必要になることがあります。

  • ディメンション内で他の属性として実装されていない属性プロパティがあれば、その値。そのような属性プロパティには、単項演算子、翻訳、カスタム ロールアップ、カスタム ロールアップ プロパティ、およびスキップされたレベルなどがあります。

Insert コマンドのプロパティは、以下の 2 つだけです。

  • Object プロパティ。メンバを挿入するディメンションへのオブジェクト参照が含まれます。オブジェクト参照には、そのディメンションに関するデータベース識別子、キューブ識別子、およびディメンション識別子が含まれます。

  • Attributes プロパティ。メンバを挿入する属性を識別するための 1 つ以上の Attribute 要素が含まれます。各 Attribute 要素は、属性を識別し、その属性に追加する 1 つのメンバの、名前、値、翻訳、単項演算子、カスタム ロールアップ、カスタム ロールアップ演算子、およびスキップされたレベルを指定します。

    注意

    Attribute 要素には、すべてのプロパティを含める必要があります。含めない場合、エラーが発生する可能性があります。

既存のメンバの更新

Update コマンドは、書き込み許可ディメンション内にある指定された属性内の既存のメンバを、他の属性内の他のメンバとの関係に基づいて更新します。Update コマンドを使用すると、ディメンションに含まれる階層内の他のレベルにメンバを移動することや、親属性によって定義される親子階層を再構成することができます。

Update コマンドを作成する前に、更新するメンバに関する以下の情報を確認しておく必要があります。

  • 更新する既存のメンバを含むディメンション。

  • 更新する既存のメンバを含むディメンションの属性。

  • 既存のメンバのキー。属性で複合キーを使用する場合は、キーに複数の値が必要になることがあります。

  • ディメンション内で他の属性として実装されていない属性プロパティがあれば、その値。そのような属性プロパティには、単項演算子、翻訳、カスタム ロールアップ、カスタム ロールアップ プロパティ、およびスキップされたレベルなどがあります。

Update コマンドのプロパティは、以下の 3 つの必須プロパティだけです。

  • Object プロパティ。メンバを更新するディメンションへのオブジェクト参照が含まれます。オブジェクト参照には、そのディメンションに関するデータベース識別子、キューブ識別子、およびディメンション識別子が含まれます。

  • Attributes プロパティ。メンバを更新するディメンションを識別するための 1 つ以上の Attribute 要素が含まれます。Attribute 要素は、属性を識別し、その属性に関して更新する 1 つのメンバの、名前、値、翻訳、単項演算子、カスタム ロールアップ、カスタム ロールアップ演算子、およびスキップされたレベルを指定します。

    注意

    Attribute 要素には、すべてのプロパティを含める必要があります。含めない場合、エラーが発生する可能性があります。

  • Where プロパティ。メンバを更新する属性を制限する 1 つ以上の Attribute 要素が含まれます。Where プロパティは、Update コマンドをメンバの特定のインスタンスに制限する場合に不可欠です。Where プロパティが指定されない場合、特定のメンバのすべてのインスタンスが更新されます。たとえば、3 人の顧客について、都市名を Redmond から Bellevue に変更したいとします。都市名を変更するには、変更する City 属性のメンバに対して、Customer 属性の 3 つのメンバを識別する Where プロパティを指定する必要があります。この Where プロパティを指定せずに Update コマンドを実行すると、都市名が現在 Redmond であるすべての顧客について、都市名が Bellevue に変更されます。

    注意

    新しいメンバの場合は例外で、Update コマンドで更新できるのは、Where 句に含まれていない属性の属性キーの値のみです。たとえば、ある顧客が更新されている場合には都市名を更新できません。それ以外の場合には、すべての顧客に関して都市名が変更されます。

親階層のメンバの更新

親属性をサポートするために、Update コマンドには省略可能な MoveWithDescendants プロパティが用意されています。MoveWithDescendants プロパティを true に設定すると、親メンバの識別子が変更された場合に、その親メンバの子孫も親メンバと一緒に移動します。この値が false に設定されている場合は、親メンバを移動すると、その親メンバの直接の子孫が親メンバのあったレベルに昇格します。

親属性のメンバを更新する場合、Update コマンドで他の属性のメンバを更新することはできません。

既存のメンバの削除

Drop コマンドを作成する前に、削除するメンバに関する以下の情報を確認しておく必要があります。

  • 削除する既存のメンバを含むディメンション。

  • 削除する既存のメンバを含むディメンションの属性。

  • 削除する既存のメンバのキー。属性で複合キーを使用する場合は、キーに複数の値が必要になることがあります。

Drop コマンドのプロパティは、以下の 2 つの必須プロパティだけです。

  • Object プロパティ。メンバを破棄するディメンションへのオブジェクト参照が含まれます。オブジェクト参照には、そのディメンションに関するデータベース識別子、キューブ識別子、およびディメンション識別子が含まれます。

  • Where プロパティ。メンバを削除するディメンションを制限するための 1 つ以上の Attribute 要素が含まれます。Where プロパティは、Drop コマンドをメンバの特定のインスタンスに制限する場合に不可欠です。Where プロパティが指定されない場合、特定のメンバのすべてのインスタンスが削除されます。たとえば、Redmond から 3 人の顧客を削除したいとします。これらの顧客を削除するには、Customer 属性で削除対象の 3 つのメンバと、3 人の顧客を削除する City 属性の Redmond メンバの両方を識別する Where プロパティを指定する必要があります。Where プロパティで City 属性の Redmond メンバだけが指定されている場合、Redmond に関連付けられているすべての顧客が Drop コマンドによって削除されます。Where プロパティで Customer 属性の 3 つのメンバだけが指定されている場合、3 人の顧客に関して、Drop コマンドによって全体が削除されます。

    注意

    Drop コマンドに含まれる Attribute 要素には、AttributeName および Keys プロパティのみを含める必要があります。そうでない場合、エラーが発生する可能性があります。

親階層のメンバの削除

DeleteWithDescendants プロパティを設定すると、親メンバと共にその親メンバの子孫も削除されます。この値が false に設定されている場合は、その親メンバの直接の子孫が、親メンバのあったレベルに昇格します。

セキュリティに関する注意セキュリティに関する注意

親メンバとその子孫の両方を削除するためにユーザーに必要な権限は、親メンバに対する削除権限だけです。ユーザーが子孫に対する削除権限を持っている必要はありません。