WITH
Задается после источника данных во FROM и используется для указания дополнительных подсказок использования таблиц. Подсказки нельзя задать для подзапросов и именованных выражений.
Поддерживаются следующие значения:
INFER_SCHEMA— задает флаг вывода схемы таблицы. Поведение аналогично заданию прагмы yt.InferSchema, только для конкретного источника данных. Можно задать число строк для выведения (число от 1 до 1000).FORCE_INFER_SCHEMA— задает флаг вывода схемы таблицы. Поведение аналогично заданию прагмы yt.ForceInferSchema, только для конкретного источника данных. Можно задать число строк для выведения (число от 1 до 1000).DIRECT_READ— подавляет работу некоторых оптимизаторов и заставляет использовать содержимое таблицы как есть. Поведение аналогично заданию отладочной прагмы DirectRead, только для конкретного источника данных.INLINE— указание на то, что содержимое таблицы небольшое и нужно использовать его представление в памяти для обработки запроса. Реальный объем таблицы при этом не контролируется, и если он большой, то запрос может упасть по превышению памяти.UNORDERED— подавляет использование исходной сортировки таблицы.XLOCK— указание на то, что нужно брать эксклюзивный лок на таблицу. Полезен, когда чтение таблицы происходит на стадии обработки метапрограммы запроса, а затем ее содержимое обновляется в основном запросе. Позволяет избежать потери данных, если между исполнением фазы метапрограммы и основной частью запроса внешний процесс успел изменить таблицу.SCHEMAtype — указание на то, что следует использовать указанную схему таблицы целиком, игнорируя схему в метаданных.COLUMNStype — указание на то, что следует использовать указанные типы для колонок, чьи имена совпадают с именами колонок таблицы в метаданных, а также какие колонки дополнительно присутствуют в таблице.IGNORETYPEV3,IGNORE_TYPE_V3— задает флаг игнорирования type_v3 типов в таблице. Поведение аналогично заданию прагмы yt.IgnoreTypeV3, только для конкретного источника данных.
При работе с внешними файловыми источниками данных можно дополнительно указывать ряд параметров:
FORMAT- формат хранимых данных в файловых хранилищах в федеративных запросах. Допустимые значения:csv_with_names,tsv_with_names,json_list,json_each_row,json_as_string,parquet,raw.COMPRESSION- формат сжатия файлов в файловых хранилищах в федеративных запросах. Допустимые значения: gzip, zstd, lz4, brotli, bzip2, xz.PARTITIONED_BY- список колонок партиционирования данных в файловых хранилищах в федеративных запросах. Содержит список колонок в порядке их размещения в файловом хранилище.projection.enabled- флаг включения расширенного партиционирования данных. Допустимые значения:true,false.projection.<field_name>.type- тип поля расширенного партиционирования данных. Допустимые значения:integer,enum,date.projection.<field_name>.<options>- расширенные свойства поля расширенного партиционирования данных.
При задании подсказок SCHEMA и COLUMNS в качестве значения типа type должен быть задан тип структуры.
Примеры
SELECT key FROM my_table WITH INFER_SCHEMA;
SELECT key FROM my_table WITH FORCE_INFER_SCHEMA="42";
$s = (SELECT COUNT(*) FROM my_table WITH XLOCK);
INSERT INTO my_table WITH TRUNCATE
SELECT EvaluateExpr($s) AS a;
SELECT key, value FROM my_table WITH SCHEMA Struct<key:String, value:Int32>;
SELECT key, value FROM my_table WITH COLUMNS Struct<value:Int32?>;
SELECT key, value FROM EACH($my_tables) WITH SCHEMA Struct<key:String, value:List<Int32>>;
Была ли статья полезна?
Предыдущая
Следующая