Как получить общий размер байта схем в хранилище данных Snowflake - PullRequest
0 голосов
/ 06 февраля 2020

Мне нравится, как запрос SHOW TABLES возвращает строки и байты для каждой из перечисленных таблиц, но, к сожалению, это не относится к запросу SHOW SCHEMAS.

Какой лучший способ получить общее значение размер байта списка схем?

Ответы [ 2 ]

1 голос
/ 08 февраля 2020

Если у вас есть доступ к accountadmin или вам был предоставлен доступ к представлениям использования учетной записи , вы можете попробовать использовать TABLE_STORAGE_METRICS.

select 
TABLE_CATALOG,
TABLE_SCHEMA, 
nicebytes(sum(ACTIVE_BYTES)) ACTIVE_STORAGE, 
nicebytes(sum(TIME_TRAVEL_BYTES)) TIME_TRAVEL_STORAGE, 
nicebytes(sum(FAILSAFE_BYTES)) FAILSAFE_STORAGE
from SNOWFLAKE.ACCOUNT_USAGE.TABLE_STORAGE_METRICS
where TABLE_DROPPED IS NULL
and SCHEMA_DROPPED IS NULL
and CATALOG_DROPPED IS NULL
group by 1,2
order by 1,2,3

Это также использует nicebytes UDF

1 голос
/ 06 февраля 2020

Мне удалось сделать это с помощью запроса information_schema.tables:

SELECT
  table_schema AS schema,
  SUM(bytes) AS bytes
FROM information_schema.tables
GROUP BY schema;

Обратите внимание, что это работает только для текущей базы данных, поскольку каждая база данных имеет свою собственную information_schema. Так что это не сработает, чтобы получить размер списка баз данных. Однако возможен общий размер каждой БД по отдельности:

SELECT SUM(bytes) AS bytes
FROM [database_name].information_schema.tables;

Хорошим дополнением к этому является использование UDF для удобного форматирования размера байта, например, nicebytes пример здесь , что приводит к nicebytes(SUM(bytes)) AS bytes в запросе.

...