# DSQLエレメントパス

DSQLマップでは、ストラクチャーエレメントをコンテキストに応じて絶対パスか相対パスで参照できます。

## ルーピングコンテキスト

DSQLマップにあるパスを理解するためには、ループコンテキストという概念を理解することが大切です。ループコンテキストは、ストラクチャーで複数回出現しうるエレメントをどのように扱うかを説明するものです。次のマップでは、出力ストラクチャーにitemsという名前のループエレメントがあります。このエレメントには、入力エレメント内のいずれかのループと関連付けるループコンテキストが必要です。この場合、入力ストラクチャーにある各departmentsループにitemsが出現するたびに、itemsエレメントを1つ出力に含める必要があります。これは次の式で定義されます。

```
FROM departments
UNNEST items
```

items出力エレメントのルーピングコンテキストは、items入力エレメントです。 ![出力エレメントと入力エレメント。](https://help.qlik.com/talend/ja-JP/data-mapper-user-guide/Resources/images/tdm-dsql-map-editor-looping-example.png)

## 絶対パス

エレメントの絶対パスは、ルートエレメントを起点とするストラクチャーにおけるエレメントの位置を表すものです。ストラクチャー階層でのレベルはピリオドで区切られます。たとえば上のマップの入力ストラクチャーの場合、descriptionエレメントの絶対パスはplusstore.department.items.description.Descriptionです。

情報メモヒント: エレメントの絶対パスを取得するためには、そのエレメントを右クリックして[Copy path to clipboard] (パスをクリップボードにコピー)をクリックします。

## 相対パス

エレメントの相対パスは、そのエレメントのループコンテキスト、またはループコンテキストの親ループを起点とするストラクチャーにおけるエレメントの位置を説明するものです。上のマップでは、次の相対パスを使用できます。

* plusstore.departments.salesperson\_id用にsalesperson\_id
* plusstore.location用にlocation
* plusstore.departments.items.description用にdescription

パスが曖昧な場合、相対パスでエレメントを参照することはできません。上の例では、入力ストラクチャーの別々のループの下にnameという名前のエレメントが複数含まれています。ルーピングコンテキストがitems入力エレメントである場合、nameという相対パスで参照されるのは、itemsの下にあるnameエレメントのみです。他のnameエレメントは絶対パス(plusstore.department.nameなど)で参照する必要があります。

ルーピングコンテキストが変更されると、必要に応じて相対パスも自動的に絶対パスに変更されることがあります。上の例でルーピングコンテキストがもともとplusstore.departmentsループであれば、nameという相対パスでdepartment\_name出力エレメントにあるplusstore.department.nameを参照できます。続いてルーピングコンテキストをplusstore.departments.itemsループに変更すると、nameという相対パスはplusstore.departments.items.nameしか参照できなくなり、department\_nameエレメントにある式はplusstore.departments.nameという絶対パスにアップデートされます。

情報メモヒント: ルーピングコンテキストが疑わしい場合は、相対パスの代わりに絶対パスを常に使用できます。

ループするコンテキストと相対パスの例は、[DSQLマップでネスト化されたループをマッピング](https://help.qlik.com/talend/ja-JP/data-mapper-user-guide/8.0/mapping-nested-loops-in-dsql-map)をご覧ください。