Перечисление содержимого директории на кластере
Указывается как функция FOLDER
в FROM.
Аргументы:
- Путь к директории;
- Опционально строка со списком интересующих мета атрибутов через точку с запятой.
В результате получается таблица с тремя фиксированными колонками:
- Path (
String
) — полное имя таблицы; - Type (
String
) — тип узла (table, map_node, file, document и пр.); - Attributes (
Yson
) — Yson-словарь с заказанными во втором аргументе мета атрибутами.
Рекомендации по использованию:
- Чтобы получить только список таблиц, нужно не забывать добавлять
...WHERE Type == "table"
. Затем, опционально добавив ещё условий, с помощью агрегатной функции AGGREGATE_LIST от колонки Path можно получить только список путей и передать их в EACH. - Так как колонка Path выдаётся в том же формате, что и результат функции TablePath(), то их можно использоваться для JOIN атрибутов таблицы к её строкам.
- C колонкой Attributes рекомендуется работать через Yson UDF.
Важно
Следует с осторожностью использовать FOLDER с атрибутами, содержащими большие значения (schema
может быть одним из таких). Запрос с FOLDER на папке с большим число таблиц и тяжелым атрибутом может создать большую нагрузку на мастер YT.
Примеры
USE hahn;
$table_paths = (
SELECT AGGREGATE_LIST(Path)
FROM FOLDER("my_folder", "schema;row_count")
WHERE
Type = "table" AND
Yson::GetLength(Attributes.schema) > 0 AND
Yson::LookupInt64(Attributes, "row_count") > 0
);
SELECT COUNT(*) FROM EACH($table_paths);