#sql #snowflake-cloud-data-platform
Вопрос:
Я хочу отобразить все таблицы, в которых количество записей равно нулю в схеме abc в snowflake :
Я использовал этот запрос из Интернета, :
select t.table_schema || '.' || t.table_name as "table_name"
from information_schema.tables t
where t.table_type = 'BASE TABLE'
and t.row_count = 0
order by "table_name";
и это дало мне результаты, но я не в состоянии понять первые 3 строки запроса.
кто-нибудь может помочь!
Кроме того, я хочу получить размер таблицы, для которой я использовал приведенный ниже запрос, но получаю нулевые записи :
SELECT table_catalog,
table_name,
active_bytes / 1024 AS storage_usage_MB
FROM "INFORMATION_SCHEMA".table_storage_metrics
where TABLE_CATALOG in ('TEST_DB');
Комментарии:
1. Если вы хотите, чтобы мы помогли объяснить первые 3 строки, которые вы получите с помощью запроса information_schema.tables, вам следует добавить результат в 3 строки здесь.
2. Первые три строки
SELECT
FROM
WHERE
-это предложения//, которые являются очень базовыми для SQL. Что нужно объяснить? Это||
стандартный оператор SQL для объединения строк.3. Что касается второго вопроса. В документации это четко сказано
To query this view, you must use the ACCOUNTADMIN role. The view is visible to other views and can be queried, but the queries will return no rows.
. Вы используете роль АДМИНИСТРАТОРА учетной записи? И разве вы не можете просто использоватьinformation_schema.tables.BYTES
для этого колонку? docs.snowflake.com/en/sql-reference/info-schema/…4. Для этого есть даже пример: docs.snowflake.com/en/sql-reference/info-schema/tables.html
5. @GordonLinoff Я знал об основных предложениях sql , но не об операторе объединения, спасибо за ваш ответ
Ответ №1:
Спасибо за ваше время, я получил ответ, прочитав официальную документацию snowflake:
use schema your_database.information_schema;
select * from tables where table_schema = 'your_schema' and ROW_COUNT=0 ;
Используя приведенный выше запрос, вы получите все таблицы с нулевыми записями.
@CMe , Спасибо за ваше время, Вот результат для первых трех строк :
select t.table_schema || '.' || t.table_name as "table_name"
from information_schema.tables t
where t.table_type = 'BASE TABLE'
——-Выход———-
| Row | table_name |
--------------------------------------
| 1 | schema_name.Table_Name_1 |
| 2 | schema_name.Table_Name_2 |
.
.
. so on