使用用户信息个性化您的 Streamlit 应用程序¶
|st.user|_API 让您的 |sis| 应用程序可以访问有关当前查看该应用程序的人员的信息。您可以使用此功能显示个性化问候语、按用户筛选数据或跟踪谁执行了操作。
st.user 在 Streamlit in Snowflake 中提供的内容¶
在 Streamlit in Snowflake 中,st.user 为当前查看者提供两个属性:
st.user.user_name– 查看者的 Snowflake 用户名。st.user.email– 查看者的电子邮件地址。
以下示例通过查看者的 Snowflake 用户名向其打招呼:
查找查看者的显示名称(可选)¶
st.user.user_name 返回 Snowflake 用户名(例如 JSMITH)。要显示更友好的名称,您可以使用 DESCRIBE USER 查找用户的显示名称。这需要提升权限:应用程序所有者的角色必须具有用户对象上的 MONITOR 权限,或者是账户管理员。
以下示例通过查看者的显示名称向其打招呼:
个性化数据查询¶
筛选查询结果,以便每个查看者只能看到自己的数据。此示例使用 session.sql() 而不是 conn.query(),以便查询在每次重新运行时都重新运行,而不是返回缓存的结果:
跟踪执行操作的人员¶
将数据写回 Snowflake 时包含查看者的身份:
与 CURRENT_USER() 的关系¶
SQL 函数 CURRENT_USER() 返回会话所有者的 Snowflake 用户名。在由使用所有者权限的 Streamlit in Snowflake 应用程序中,这是 Streamlit 对象的所有者,而不是查看者。要在 Python 代码中识别查看者,请改用 st.user。
如果您在 SQL 查询中需要查看者的身份,请考虑使用受限的调用方权限(预览版)。在调用方权限受限的情况下,查询以查看者身份运行,因此 CURRENT_USER() 返回查看者的身份。有关更多信息,请参阅 受限制的调用方的权限和 Streamlit in Snowflake。
运行时差异¶
st.user 在容器和仓库运行时中均可用。这两种环境中的行为相同:它返回查看应用程序的人员的身份,而不是 Streamlit 对象的所有者。