如何找到在雪花中创建表的用户
Posted
技术标签:
【中文标题】如何找到在雪花中创建表的用户【英文标题】:How to find the user who created a table in Snowflake 【发布时间】:2019-11-04 17:44:05 【问题描述】:我正在尝试查找用户为 Snowflake 中的表创建的。 Information_Schema 表只显示拥有它的角色。
浏览 Query_History 很费力。
谢谢, 山姆
Information_Schema 和 Show tables 命令。
【问题讨论】:
【参考方案1】:在 snowflake.account_usage.query_history 中进行随机搜索可能会很费力,但有针对性的搜索相当快速和简单,这应该适合您。
SET dbName='DATABASE NAME HERE';
SET schemaName='SCHEMA NAME HERE';
SET tableName='TABLE NAME HERE';
SET create_dt=(
SELECT MIN(created)
FROM snowflake.account_usage.tables
WHERE table_catalog = $dbName
AND table_schema = $schemaName
AND table_name = $tableName
AND deleted is null);
SELECT *
FROM snowflake.account_usage.query_history
WHERE query_text iLike '%CREATE%TABLE%'||$tableName||'%'
AND execution_status = 'SUCCESS'
AND start_time = $create_dt;
【讨论】:
【参考方案2】:发布我想出的查询,以查找为任何想要调整它的人创建表的人的用户/角色。
// anything older than 20 days ago
SET cutoff = current_date() - 20;
SELECT h.query_text,
h.database_name,
h.user_name,
h.role_name,
t.table_name,
u.login_name
FROM snowflake.account_usage.query_history h
LEFT JOIN snowflake.account_usage.users u
ON u.name = h.user_name
AND u.disabled = FALSE
AND u.deleted_on IS NULL
JOIN user_stage.information_schema.tables t
ON t.created = h.start_time
WHERE execution_status = 'SUCCESS'
AND start_time < $cutoff
AND query_type LIKE '%CREATE_TABLE%'
AND CONTAINS(UPPER(h.query_text), UPPER(t.table_name))
AND t.created < $cutoff;
【讨论】:
以上是关于如何找到在雪花中创建表的用户的主要内容,如果未能解决你的问题,请参考以下文章