Databricks:如何在%SQL QUERY中获取当前用户

问题描述 投票:0回答:1

在DATABRICKS DELTA数据库中,由于用户组更改,我在同一表中具有有关不同用户组的信息。我的意思是所有组中的所有用户都使用同一张表。

用户通过单个视图访问数据。

我希望根据访问视图的用户来过滤数据。你知道我该怎么做吗?这将是一个示例(any_object将是检索使用该视图或该视图所属的用户组的当前用户的值的命令):

%sql
CREATE VIEW db.table AS SELECT * FROM WHERE column1 = any_object.username OR any_object.groupname 

这可能吗?

谢谢!

sql get identity databricks delta-lake
1个回答
0
投票

简短的答案是,您不能。 [自Spark 3.0 / Spark 2.4.5起]

Spark没有安全的current_user()方法。

更长的答案,这是我的一些技巧,可用于我的一些ETL代码。我尚未在您要寻找的多用户方案中对其进行过测试。

%scala
val key = "spark.databricks.username"
val value = dbutils.notebook.getContext.tags("user")
spark.conf.set(key, value)

print(spark.conf.get(key))

val confBd = sc.broadcast(spark.conf.getAll.toMap)
/*
  @return Current username
*/
val current_userx = () => {
  confBd.value.get("spark.databricks.username")
}
spark.udf.register("current_user", current_userx)
%sql
select current_user()
© www.soinside.com 2019 - 2024. All rights reserved.