aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/docs/ru/syntax/use.md
blob: 384794b618e05e4c5eb74798eaa91b60a45324d5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# USE

Указать «базу данных». Как правило, в её роли выступает один из кластеров. Это указание будет использоваться по умолчанию для поиска таблиц в тех случаях, где база данных не указана явно.

Если в запросе не используется `USE`, то кластер следует указывать в начале пути к таблице в формате ``` cluster.`path/to/table` ```, например ``` cluster.`home/yql/test` ```. Backticks используются для автоматического экранирования спецсимволов, в данном случае слешей.

Обычно имя кластера указывается непосредственно, но есть возможность указать его в виде выражения. В частности, это позволит использовать параметры, объявленные через [DECLARE](declare.md).
В этом случае для `USE` должна использоваться запись ```USE yt:$cluster_name```, где `$cluster_name` - [именованное выражение](expressions.md#named-nodes) типа `String`.
Либо можно указывать кластер прямо в начале пути к таблице в формате ``` yt:$cluster_name.`path/to/table` ```.

Сам `USE` при этом можно использовать внутри [действий](action.md) или [шаблонов подзапросов](subquery.md). Значение текущего кластера наследуется на объявления вложенных действий или подзапросов. Область влияния `USE` прекращается по окончании действия или шаблона подзапроса, в котором оно объявлено.

## Примеры

```yql
USE my_cluster;
```

{% note info "Примечание" %}

`USE` **не** гарантирует, что запрос обязательно будет выполнен именно на указанном кластере. Запрос может быть выполнен на другом кластере, если в нем не используются входные данные (например, `USE foo; SELECT 2 + 2;` ) или если указан полный путь к таблице на другом кластере (например, `USE foo; SELECT * FROM bar.``path/to/table``;`).

{% endnote %}