Personalizar seu app Streamlit com informações do usuário¶
A API st.user permite que seu app Streamlit in Snowflake acesse informações sobre a pessoa que está visualizando o app no momento. Você pode usar isso para exibir saudações personalizadas, filtrar dados por usuário ou rastrear quem realizou uma ação.
O que st.user fornece no Streamlit in Snowflake¶
No Streamlit in Snowflake, st.user fornece dois atributos para o visualizador atual:
st.user.user_name– o nome de usuário Snowflake do visualizador.st.user.email– o endereço de e-mail do visualizador.
O exemplo a seguir saúda o visualizador pelo nome de usuário Snowflake:
Consultar o nome de exibição do visualizador (opcional)¶
st.user.user_name retorna o nome de usuário do Snowflake (por exemplo, JSMITH). Para exibir um nome mais amigável, você pode consultar o nome de exibição do usuário com DESCRIBE USER. Isso requer privilégios elevados: a função do proprietário do app deve ter o privilégio MONITOR no objeto do usuário ou ser um administrador da conta.
O exemplo a seguir saúda o visualizador pelo nome de exibição dele:
Personalizar consultas de dados¶
Filtre os resultados de consulta para que cada visualizador exiba apenas os próprios dados. Este exemplo usa session.sql() em vez de conn.query() para que a consulta seja executada novamente a cada nova execução, em vez de retornar resultados em cache:
Rastrear quem realizou uma ação¶
Inclua a identidade do visualizador ao gravar dados de volta para o Snowflake:
Relacionamento com CURRENT_USER()¶
A função CURRENT_USER() do SQL retorna o nome de usuário do Snowflake do proprietário da sessão. Em apps Streamlit in Snowflake que usam direitos de proprietário, este é o proprietário do objeto Streamlit, não o visualizador. Para identificar o visualizador em seu código Python, use st.user.
Se você precisar da identidade do visualizador em consultas SQL, considere usar direitos de chamador restritos (versão preliminar). Com direitos de chamador restritos, as consultas são executadas como o visualizador; portanto, CURRENT_USER() retorna a identidade do visualizador. Para obter mais informações, consulte Direitos restritos do autor da chamada e do Streamlit in Snowflake.
Diferenças de tempo de execução¶
st.user está disponível nos tempos de execução de contêiner e de warehouse. O comportamento é o mesmo em ambos os ambientes: ele retorna a identidade da pessoa que visualiza o app, não o proprietário do objeto Streamlit.