Прагмы для работы с файлами
File
Тип значения | По умолчанию | Статическая / динамическая |
---|---|---|
Два или три строковых аргумента — алиас, URL и опциональное имя токена | — | Статическая |
Приложить файл к запросу по URL. Использовать приложенные файлы можно с помощью встроенных функций FilePath и FileContent. Данная PRAGMA
является универсальной альтернативой прикладыванию файлов с использованием встроенных механизмов веб- или консольного клиентов.
Сервис YQL оставляет за собой право кешировать находящиеся за URL файлы на неопределённый срок, поэтому при значимом изменении находящегося за ней содержимого настоятельно рекомендуется модифицировать URL за счёт добавления/изменения незначащих параметров.
При указании имени токена его значение будет использоваться для обращения к целевой системе.
FileOption
Тип значения | По умолчанию | Статическая / динамическая |
---|---|---|
Три строковых аргумента — алиас, ключ, значение | — | Статическая |
Установить для указанного файла опцию по заданному ключу в заданное значение. Файл с этим алиасом уже должен быть объявлен через PRAGMA File или приложен к запросу.
Поддерживаемые на данный момент опции:
Ключ | Диапазон значений | Описание |
---|---|---|
bypass_artifact_cache |
true /false |
Управляет кешированием |
Пример:
PRAGMA FileOption("<file-name>", "bypass_artifact_cache", "true");
Library
Тип значения | По умолчанию | Статическая / динамическая |
---|---|---|
Один или два аргумента — имя файла и опциональный URL | — | Статическая |
Интерпретировать указанный приложенный файл как библиотеку, из которой можно делать IMPORT. Тип синтаксиса библиотеки определяется по расширению файла:
.sql
для YQL диалекта SQL (рекомендуется);.yqls
для s-expressions.
Пример с приложенным файлом к запросу:
PRAGMA library("a.sql");
IMPORT a SYMBOLS $x;
SELECT $x;
В случае указания URL библиотека скачивается с него, а не с предварительного приложенного файла, как в следующем примере:
PRAGMA library("a.sql","https://raw.githubusercontent.com/ytsaurus/ytsaurus/refs/heads/main/yt/docs/code-examples/yql/pragma-library-example");
IMPORT a SYMBOLS $x;
SELECT $x;
При этом можно использовать подстановку текстовых параметров в URL:
DECLARE $_ver AS STRING; -- "pragma-library-example"
PRAGMA library("a.sql","https://raw.githubusercontent.com/ytsaurus/ytsaurus/refs/heads/main/yt/docs/code-examples/yql/{$_ver}");
IMPORT a SYMBOLS $x;
SELECT $x;
Package
Тип значения | По умолчанию | Статическая / динамическая |
---|---|---|
Два или три аргумента — имя пакета, URL и опциональный токен | — | Статическая |
Приложить иерархический набор файлов к запросу по URL, интерпретируя их в качестве пакета с указанным именем — взаимосвязанного набора библиотек.
Имя пакета ожидается в формате project_name.package_name
; из библиотек пакета в дальнейшем можно делать IMPORT с именем модуля вида pkg.project_name.package_name.maybe.nested.module.name
.
Пример для пакета с плоской иерархией, состоящего из двух библиотек — foo.sql и bar.sql:
PRAGMA package("project.package", "/path/to/package");
IMPORT pkg.project.package.foo SYMBOLS $foo;
IMPORT pkg.project.package.bar SYMBOLS $bar;
SELECT $foo, $bar;
При этом можно использовать подстановку текстовых параметров в URL:
DECLARE $_path AS STRING; -- "path"
PRAGMA package("project.package", "{$_path}/to/package");
IMPORT pkg.project.package.foo SYMBOLS $foo;
IMPORT pkg.project.package.bar SYMBOLS $bar;
SELECT $foo, $bar;
OverrideLibrary
Тип значения | По умолчанию | Статическая / динамическая |
---|---|---|
Один аргумент — имя файла | — | Статическая |
Интерпретировать указанный приложенный файл как библиотеку и перекрыть ей одну из библиотек пакета.
Имя файла ожидается в формате project_name/package_name/maybe/nested/module/name.EXTENSION
, поддерживаются аналогичные PRAGMA Library расширения.
Пример:
PRAGMA package("project.package", "/path/to/package");
PRAGMA override_library("project/package/maybe/nested/module/name.sql");
IMPORT pkg.project.package.foo SYMBOLS $foo;
SELECT $foo;
Важно
Для PRAGMA Package
поддерживаются только ссылки на директории на YTsaurus кластерах.