Есть ли способ запросить использование биллинга с использованием python, если ему предоставлены привилегии учетной записи Monitor? - PullRequest
1 голос
/ 21 октября 2019

Я хочу запросить информацию о счетах в виде снежинок и суммировать ее в блокноте Jupyter.

В настоящее время я использую Snowflake-SQLAlchemy и python-Snowke-Connector для подключения к Snowflake и запросов к базам данных. Я хочу запросить использование кредита разными пользователями / складами в учетной записи. Мне предоставлены привилегии учетной записи монитора, поэтому я могу видеть эту информацию в пользовательском интерфейсе, однако я не могу понять, как можно напрямую запросить эту информацию.

Я пробовал такие запросы, как приведенный ниже, посколькуУ меня нет AccountAdmin, я не могу напрямую запросить эту схему.

from sqlalchemy import create_engine
from snowflake.sqlalchemy import URL
import pandas as pd
import numpy as np
import snowflake.connector

query = """
select start_time::date as usage_date,
       warehouse_name,
       sum(credits_used) as total_credits_used
from warehouse_metering_history
where start_time >= date_trunc(month, current_date)
group by 1,2
order by 2,1;"""

result_df = pd.read_sql_query(query, engine)

Ожидаемый результат - это фрейм данных, содержащий данные, аналогичные данным, которые видны при использовании аккаунта, биллинга и использования. Это таблица со списком пользователей и использования кредита с течением времени. В настоящее время я не могу вернуть эту информацию.

1 Ответ

2 голосов
/ 21 октября 2019

Необходимо убедиться, что вы входите в систему с правильной ролью (роль, которой предоставлена ​​учетная запись монитора privs). Если вы не указали, в какую роль вы входите, как в вашем скрипте Python, то Snowflake будет использовать ваш default_role, и это может не иметь правильных привилегий.

Также можно попытаться полностью квалифицировать таблицу warehouse_metering_history, чтобы она содержала базу данных и схему таблицы, как показано ниже:

select start_time::date as usage_date,
       warehouse_name,
       sum(credits_used) as total_credits_used
from snowflake.account_usage.warehouse_metering_history -- Here fully qualify the table 
where start_time >= date_trunc(month, current_date)
group by 1,2
order by 2,1;

Попробуйте выполнить тот же запрос черезвеб-интерфейс и посмотреть, что вы получаете.

...