識別子 (SSIS)
識別子とは、式の内部で演算に使用できる列および変数のことです。式では、標準識別子と修飾された識別子を使用できます。標準識別子とは、追加の修飾子を必要としない識別子のことです。たとえば、MiddleName は、AdventureWorks2008R2 データベースの Person テーブルの列ですが、これは標準識別子です。修飾された識別子とは、角かっこで区切られた識別子のことです。識別子の名前にスペースが含まれていたり、識別子名の最初の文字が英字でもアンダースコアでもない場合、識別子には区切り記号が必要になります。たとえば、列名 Middle Name は角かっこで修飾し、式では [Middle Name] と記述する必要があります。
パッケージには、同じ名前の列を公開するデータ ソースが含まれる場合があります。式エバリュエーターでは列を明確に識別するため、ソースの名前で列名を修飾する、ドット付き表記がサポートされています。たとえば、ソースが GetGeographyData、列が GeographyKey という名前の場合、この列は GetGeographyData.GeographyKey を使用して参照できます。
パッケージには、複数の変数を同じ名前で含めることができます。ただし、これらの変数は異なる名前空間に属する必要があります。式エバリュエーターでは、名前空間を解決する演算子が用意され、これにより、名前空間を使用して変数を識別できます。詳細については、「構文 (SSIS)」を参照してください。
標準識別子
標準識別子の名前付けは、次の規則に従う必要があります。
名前の最初の文字は、Unicode Standard 2.0 に定義されている文字か、アンダースコア (_) である必要があります。
2 番目以降の文字では、Unicode Standard 2.0 に定義されている文字または数字と、アンダースコア (_)、@、$、および # 文字を使用できます。
重要 |
---|
埋め込み型スペース、および上記の一覧に表示されていない特殊文字は、標準識別子では無効です。スペースや特殊文字を使用するには、標準識別子ではなく修飾された識別子を使用する必要があります。 |
修飾された識別子
識別子の名前にスペースが含まれる場合、または標準識別子の名前が有効でない場合は、識別子を修飾する必要があります。式エバリュエーターは、角かっこ ([]) を使用して識別子を修飾します。角かっこは、文字列の最初と最後に配置します。たとえば、識別子 5$> は [5$>] になります。角かっこは、列名、変数名、関数名で使用できます。
SSIS デザイナーのダイアログ ボックスを使用して式を構築する場合、標準識別子は、自動的に角かっこで囲まれます。ただし、角かっこが必要となるのは、名前に無効な文字が含まれている場合のみです。たとえば、MiddleName という名前の列は、角かっこなしでも有効です。
式の内部では、角かっこが含まれる列名を参照できません。たとえば、列名 Column[1] は、式では使用できません。この列を式で使用するには、角かっこなしの名前に変更する必要があります。
系列 ID
式では、系列 ID を使用して列を参照できます。系列 ID は、最初にパッケージを作成する際に自動的に割り当てられます。列の系列 ID は、SSIS デザイナーにある、[詳細エディター] ダイアログ ボックスの [列のプロパティ] タブで表示できます。
列の系列 ID を使用してその列を参照する場合、系列 ID に、ポンド (#) 記号のプレフィックスを含める必要があります。たとえば、系列 ID が 147 の列は、#147 として参照する必要があります。
式が正常に解析された場合、式エバリュエーターは、ダイアログ ボックス内の系列 ID を列名に置き換えます。
一意の列名
パッケージで使用される複数のコンポーネントは、列を同じ名前で公開する場合があります。これらの列を式で使用する場合、列を明確に識別しなければ、式は正常に解析されません。式エバリュエーターでは、元の列を識別するためのドット付き表記がサポートされています。たとえば、Age という名前の 2 つの列が FlatFileSource.Age と OLEDBSource.Age になり、これらの列がそれぞれ FlatFileSource と OLEDBSource に含まれていることを表します。パーサーでは、完全修飾名が 1 つの列名として扱われます。
基となるコンポーネント名や列名は、個別に修飾されます。次の例では、ドット付き表記を使用した角かっこの有効な使用例を示します。
基となるコンポーネント名にスペースが含まれる場合。
[MySo urce].Age
列名の最初の文字が、有効でない場合。
MySource.[#Age]
基となるコンポーネント名と列名に、無効な文字が含まれる場合。
[MySource?].[#Age]
重要 |
---|
ドット付き表記の両方の要素が 1 組の角かっこで囲まれている場合、式エバリュエーターは、その組を、元の列の組み合わせとしてではなく、単一の識別子として解釈します。 |
式内部の変数
変数が式の内部で参照される場合、変数には @ プレフィックスを含める必要があります。たとえば、Counter 変数を参照する場合、@Counter を使用します。@ 文字は、変数名の一部ではなく、式エバリュエーターが変数を識別するためのものにすぎません。SSIS デザイナーで用意されているダイアログ ボックスを使用して式を構築する場合、@ 文字が自動的に変数名に追加されます。@ 文字と変数名の間にスペースが含まれる場合は、無効になります。
変数名は、他の標準識別子の規則と同じく、次の規則に従います。
名前の最初の文字は、Unicode Standard 2.0 に定義されている文字か、アンダースコア (_) である必要があります。
2 番目以降の文字では、Unicode Standard 2.0 に定義されている文字または数字と、アンダースコア (_)、@、$、および # 文字を使用できます。
上記の一覧に表示されていない文字が変数名に含まれる場合、変数を角かっこで囲む必要があります。たとえば、スペースが含まれる変数名は角かっこで囲みます。左角かっこは、@ 文字の後ろに付けます。たとえば、My Name 変数は、@[My Name] として参照します。変数名と角かっこの間にスペースが含まれる場合は、無効になります。
注 |
---|
ユーザー定義変数およびシステム変数の名前では、大文字と小文字が区別されます。 |
一意の変数名
Integration Services ではカスタム変数がサポートされ、さらにシステム変数のセットが用意されています。既定では、カスタム変数は User 名前空間に属し、システム変数は System 名前空間に属します。カスタム変数用に別の名前空間を作成し、名前空間の名前をアプリケーションのニーズに合わせて更新できます。式ビルダーでは、すべての名前空間にあるスコープ内の変数が一覧表示されます。
すべての変数はスコープを持ち、名前空間に属します。変数は、パッケージ スコープまたは、パッケージ内のコンテナーあるいはタスクのスコープを持ちます。SSIS デザイナーの式ビルダーでは、スコープ内の変数のみが一覧表示されます。詳細については、「Integration Services の変数」および「パッケージでの変数の使用」を参照してください。
式で使用される変数名は、式エバリュエーターが式を正しく評価できるよう、一意である必要があります。パッケージで複数の変数を同じ名前で使用する場合、その変数は、それぞれ別の名前空間に属する必要があります。Integration Services では、2 つのコロン (::) から成る、名前空間を解決する演算子が用意され、変数は名前空間で修飾されます。たとえば、次の式では、Count という名前の 2 つの変数が使用されています。変数の 1 つは User 名前空間、もう 1 つの変数は MyNamespace 名前空間に属します。
@[User::Count] > @[MyNamespace::Count]
重要 |
---|
名前空間の組み合わせおよび修飾された変数名は、式エバリュエーターが変数を認識できるよう、角かっこで囲む必要があります。 |
User 名前空間の Count の値が 10、MyNamespace 名前空間の Count の値が 2 の場合、式エバリュエーターが 2 つの異なる変数を認識したため、式は true に評価されます。
変数名が一意でない場合でもエラーは発生せず、式エバリュエーターは、変数のインスタンスを 1 つのみ使用して式を評価し、間違った結果を返します。たとえば、次の式は 2 つの個別の Count 変数の値 (10 および 2) を比較することを目的としています。ただし、式エバリュエーターでは、Count 変数の同じインスタンスが 2 回使用されているので、false と評価されます。
@Count > @Count