Панель Databases
На панели DATABASES в интерактивном виде выводится информация о базах данных и таблицах ADQM. Если в конфигурации ADQM не описан ни один логический кластер, на панели выводятся базы данных, расположенные на текущем хосте ADQM.
Если в конфигурации есть описание одного или нескольких кластеров, панель содержит две вкладки:
-
LOCAL — показывает базы данных на текущем хосте ADQM (без базы данных
information_schema); -
CLUSTER — показывает иерархическое дерево баз данных и таблиц кластера (также без
information_schema). Если в конфигурации описан один кластер, он будет отображаться на вкладке по умолчанию. Если сконфигурировано несколько кластеров ADQM, кластер для отображения на панели DATABASES можно выбрать из выпадающего списка.
Когда ADQM Notebook работает через Chproxy, переключатель LOCAL/CLUSTER отсутствует — на панели всегда показывается дерево баз данных и таблиц выбранного кластера.
Клик по иконке
Refresh обновляет информацию по базам данным и таблицам.
В списке баз данных/таблиц/столбцов доступно поле для фильтрации данных — при вводе любой подстроки выполняется фильтрация одновременно на уровне всех объектов.
Таблицы
Чтобы развернуть базу данных и посмотреть таблицы, которые в ней находятся, кликните по строке базы данных. В строке каждой таблицы указывается ее размер, а по цветовому индикатору можно визуально оценить размер таблицы относительно самой большой таблицы в базе данных. На вкладке CLUSTER для таблиц также указывается количество шардов и реплик, на которых располагаются табличные данные.
При наведении курсора мыши на строку таблицы во всплывающем окне (tooltip) можно посмотреть дополнительную информацию о таблице: табличный движок, общее количество строк, общий размер и распределение данных по хостам (на вкладке CLUSTER).
При нажатии правой кнопкой мыши на строку таблицы открывается контекстное меню, которое можно использовать, чтобы автоматически вставить в выбранную SQL-ячейку (или в новую, если ни одна ячейка не выбрана) запрос к данной таблице для выполнения на одном хосте или на кластере в зависимости от выбранной на панели DATABASES вкладки (LOCAL или CLUSTER).
Из контекстного меню можно вставлять следующие запросы:
-
SELECT * … LIMIT 100 — запрос на чтение 100 строк таблицы.
LOCALSELECT * FROM "<database_name>"."<table_name>" LIMIT 100CLUSTERSELECT * FROM clusterAllReplicas('<cluster_name>', '<database_name>', '<table_name>') LIMIT 100 -
SELECT count(*) — запрос для получения общего количества строк в таблице.
LOCALSELECT count(*) FROM "<database_name>"."<table_name>"CLUSTERSELECT count(*) FROM clusterAllReplicas('<cluster_name>', '<database_name>', '<table_name>') -
DESCRIBE TABLE — запрос для получения детальной информации о структуре таблицы.
LOCAL и CLUSTERDESCRIBE TABLE "<database_name>"."<table_name>" -
SHOW CREATE TABLE — запрос для получения команды, с помощью которой была создана таблица.
LOCAL и CLUSTERSHOW CREATE TABLE "<database_name>"."<table_name>"
В каждом из приведенных выше примеров запросов имя таблицы, для которой вызывается контекстное меню, а также имя базы данных и кластера обозначаются как <table_name>, <database_name> и <cluster_name> соответственно — при вставке запроса в ячейку вместо этих обозначений будут автоматически подставляться фактические имена соответствующих объектов.
Столбцы таблиц
Чтобы развернуть таблицу и посмотреть ее столбцы, кликните по строке таблицы. Для каждого столбца показывается его имя и тип данных.
Чтобы развернуть структуру всех таблиц в рамках одной базы данных, в строке базы данных кликните по иконке
Expand all tables, которая становится видимой при наведении курсора мыши на базу данных в панели DATABASES (если все таблицы уже развернуты, иконка
Collapse all tables в строке базы данных позволяет их свернуть).
Контекстное меню
При нажатии правой кнопкой мыши на строку, соответствующую столбцу таблицы, открывается контекстное меню, с помощью которого можно быстро вставить имя столбца или один из предопределенных запросов с обращением к данному столбцу в поле редактирования запроса выбранной SQL-ячейки (или в новую ячейку, если ни одна не выбрана) для выполнения на одном хосте или кластере ADQM в зависимости от выбранной на панели DATABASES вкладки (LOCAL или CLUSTER).
В контекстном меню доступны следующие действия:
-
Insert column name — вставить имя столбца таблицы. То же самое можно сделать, кликнув по строке, соответствующей столбцу таблицы, на панели DATABASES.
-
Column stats — развернуть статистику по значениям столбца. То же самое можно сделать, кликнув по иконке
, которая появляется в строке, соответствующей столбцу таблицы, при наведении на нее курсора мыши.
-
SELECT column … LIMIT 100 — вставить запрос, который считывает значения данного столбца из 100 первых строк таблицы.
LOCALSELECT "<column_name>" FROM "<database_name>"."<table_name>" LIMIT 100CLUSTERSELECT "<column_name>" FROM clusterAllReplicas('<cluster_name>', '<database_name>', '<table_name>') LIMIT 100 -
SELECT DISTINCT values — вставить запрос, который выбирает уникальные значения (не более 100) в данном столбце таблицы и вычисляет их количество.
LOCALSELECT "<column_name>", count(*) AS cnt FROM "<database_name>"."<table_name>" GROUP BY "<column_name>" ORDER BY cnt DESC LIMIT 100CLUSTERSELECT "<column_name>", count(*) AS cnt FROM clusterAllReplicas('<cluster_name>', '<database_name>', '<table_name>') GROUP BY "<column_name>" ORDER BY cnt DESC LIMIT 100 -
SELECT * … WHERE column — вставить шаблон запроса для чтения данных из таблицы с фильтром по значению данного столбца, которое необходимо дописать в тексте запроса в выражении
WHERE "<column_name>" =после знака=.LOCALSELECT * FROM "<database_name>"."<table_name>" WHERE "<column_name>" = LIMIT 100CLUSTERSELECT * FROM clusterAllReplicas('<cluster_name>', '<database_name>', '<table_name>') WHERE "<column_name>" = LIMIT 100 -
SELECT * … ORDER BY column — вставить запрос на выборку данных из таблицы с сортировкой результатов по данному столбцу в порядке убывания.
LOCALSELECT * FROM "<database_name>"."<table_name>" ORDER BY "<column_name>" DESC LIMIT 100CLUSTERSELECT * FROM clusterAllReplicas('<cluster_name>', '<database_name>', '<table_name>') ORDER BY "<column_name>" DESC LIMIT 100 -
Copy column name — скопировать имя столбца в буфер обмена.
В каждом из приведенных выше запросов имя столбца, для которого вызывается контекстное меню, а также имя таблицы, базы данных и кластера обозначаются как <column_name>, <table_name>, <database_name> и <cluster_name> соответственно — при вставке запроса в ячейку вместо этих обозначений будут автоматически подставляться фактические имена соответствующих объектов.
Статистика по значениям
Если на панели DATABASES кликнуть по иконке
Column stats, которая показывается для столбца таблицы ADQM при наведении на него курсора мыши, или выбрать Column stats из контекстного меню столбца, развернется статистика по значениям этого столбца. Формат статистики значений зависит от типа данных столбца. Например, для следующих типов статистика включает:
-
Int | Float | Decimal | Time | Date | DateTime — диапазон значений с гистограммой;
-
String | FixedString | Enum | Bool | LowCardinality(T) — значения, которых больше всего в столбце, с горизонтальной гистограммой, показывающей их доли;
-
JSON | Dynamic | Variant | Point/Polygon | Nested — преобразованные в строки значения, которых больше всего в столбце, с горизонтальной гистограммой, показывающей их доли.
В статистике также показывается доля значений NULL (null) и приблизительное количество уникальных значений (uniq) в столбце.
Схема зависимостей объектов
Кликните по иконке Show dependency graph на панели DATABASES, чтобы посмотреть зависимости между объектами баз данных ADQM, расположенных в кластере (необходимы права
GRANT READ ON REMOTE и SELECT ON system.*) или на отдельном хосте (схема будет включать объекты, на которые у пользователя есть права). Если используется Chproxy, эта функциональность доступна только при работе на уровне кластера.
В открывшемся окне в списке слева выберите объекты (кликая по именам), зависимости которых нужно посмотреть. Поддерживаемые типы объектов: таблицы, представления, материализованные представления, словари, проекции. Каждый тип объекта отмечается своей иконкой.
Справа от имени объекта показывается общее количество его зависимостей. Чтобы выбрать все объекты, кликните Add all ниже списка. Кнопка Clear удаляет все объекты из схемы.
Выбранные объекты будут отрисованы в основной области окна и соединены стрелками. Цвет стрелки обозначает тип зависимости. Типы присутствующих на схеме зависимостей между объектами и соответствующие им цвета перечисляются в легенде в верхней части окна. Если кликнуть по типу зависимости в легенде, соответствующие связи (стрелки) между объектами будут удалены со схемы.
Возможные типы зависимостей:
-
Read — таблица и объект, из которого она читает данные;
-
Write — материализованное представление и целевая таблица, в которую будут сохраняться данные из него;
-
Trigger — таблица и материализованное представление, которое срабатывает при вставке данных в эту таблицу;
-
Distributed — Distributed-таблица и локальная таблица, на которую она ссылается;
-
Projection — проекция и ее исходная таблица;
-
Refresh — обновляемое материализованное представление и его явная зависимость (
DEPENDS ON); -
In set — таблица на основе движка Set и объект, который ее использует;
-
Merge — таблица на основе движка Merge и таблица, из которой она читает данные;
-
Dictionary to — таблица на движке Dictionary и словарь, на основе которого она создана;
-
Uses dictionary — таблица, использующая данные словаря через функцию
dictGet, и словарь; -
Dictionary from — словарь и его источник данных;
-
Buffer flush — таблица Buffer и таблица, в которую сбрасываются данные из буфера;
-
Alias — таблица Alias и ее целевая таблица.
На схеме также могут быть показаны связи между объектами баз данных на уровне запросов (например, если таблицы объединялись в запросе с помощью оператора JOIN). Это зависимости типа Read together, получаемые из таблицы system.query_log (необходимы права на чтение этой таблицы в кластере). Чтобы подключить эту функциональность, кликните по иконке
Observed activity — справа от нее из выпадающего списка можно будет выбрать временной интервал наблюдения активности по запросам к таблицам. В этом режиме в левом нижнем углу объекта на схеме отображается точка-маркер, обозначающая реальное использование объекта в течение выбранного интервала времени:
— из таблицы считывались данные;
— данные в таблицу только записывались;
— внутреннее использование таблицы;
— таблица не использовалась.
Для отключения режима наблюдения активности использования объектов кликните по иконке
.
По умолчанию в списке окна Dependency Graph не показываются объекты без связей. Кликните по иконке
Tables without connections — объекты, которые не имеют никаких зависимостей, появятся в списке, после чего их можно будет добавлять в общую схему.
Чтобы скрыть объекты без связей (в списке и на схеме), кликните по иконке
.
При наведении курсора мыши на объект во всплывающем окне показывается более подробная информация об этом объекте и его зависимостях:
-
на каких хостах располагается объект;
-
общие данные по объекту в зависимости от его типа (например, для таблицы MergeTree выводится количество строк, размер данных, количество активных кусков данных, время последней вставки данных в таблицу);
-
какие объекты являются источником данных для этого объекта (Depends on);
-
для каких объектов он сам является источником данных (Feeds);
-
какие объекты запрашиваются одновременно с этим объектом в запросах (Read together with) и общая информация о частоте обращения к объекту в запросах за выбранный интервал времени (Observed <selected_time_interval>) при включенном режиме наблюдения активности обращения к объектам в запросах.
В правом верхнем углу объекта выводится число его зависимостей, которые еще не показаны на схеме. Чтобы построить все зависимости объекта, добавленного на схему, нажмите на него правой кнопкой мыши и выберите из контекстного меню Upstream (зависимости Depends on), Downstream (зависимости Feeds), Read together (зависимости Read together with, определяемые в режиме наблюдения активности обращения к объектам) или Expand all (все зависимости объекта). Команда Remove удаляет объект со схемы.
Если кликнуть по объекту на схеме зависимостей, подсвечивается подграф, в который включаются объекты в соответствии с опцией, выбранной в заголовке окна:
-
Cluster — все объекты, связанные с выбранным объектом. При клике по другому объекту в этом подграфе подсвечиваемый подграф не меняется.
-
Lineage — только предки и потомки объекта (то есть "соседний" объект, который имеет тот же источник, что и выбранный объект, но не принадлежит directed-пути, в подсвечиваемый подграф не включается). Если кликнуть по другому объекту в этом подграфе, будет подсвечен другой подграф — lineage этого объекта.