Azure Pyspark-获取给定视图的所有表的列表

Azure Pyspark-获取给定视图的所有表的列表,azure,pyspark,databricks,Azure,Pyspark,Databricks,我们有几个视图是在其他几个视图之上创建的,以此类推。我想知道如何找到这些视图使用的所有表及其路径。然而,我还不知道如何做到这一点 起初,我想解析查询计划,并获取此信息。但是,在分析计划时,我无法获得完整路径 plan = spark.sql("explain extended select * from database.table") 计划类型为pyspark.sql.dataframe.dataframe=[计划:字符串] 然后我将其转换为字符串并解析位置。但是,位置不包含整个路径 pla

我们有几个视图是在其他几个视图之上创建的,以此类推。我想知道如何找到这些视图使用的所有表及其路径。然而,我还不知道如何做到这一点

起初,我想解析
查询计划
,并获取此信息。但是,在分析计划时,我无法获得完整路径

plan = spark.sql("explain extended select * from database.table")
计划类型为
pyspark.sql.dataframe.dataframe=[计划:字符串]

然后我将其转换为字符串并解析位置。但是,位置不包含整个路径

plan_str = df.select("plan").rdd.map(lambda r:  r[0]).collect()[0]
loc = re.search(r'InMemoryFileIndex\[(.*)\]', plan_str, re.IGNORECASE)

if loc:
    print(loc.group(1))
输出

adl://abc.azuredatalakestore.net/informationmart/database...,分区过滤器:[],推送过滤器:

下面的内容不会返回任何内容,它只是在控制台上打印

plan = spark.sql("select * from database.table").explain(true) 

但是什么?这也是我的第一个想法。如果你有配置单元视图,你应该能够解析it@paul视图是多层次的(即连接两个视图的视图,这些视图连接一个或多个表),下面包含多个表。当您执行
df.explain()时,您不也会看到一些行说
HiveTableScan(…)
?它没有给出完整路径。奇怪。对我来说,我的输出看起来是这样的:“HiveTableScan[col1,col2,col144],HiveTableRelation
my#u db
my#u table
,org.apache.hadoop.hive.ql.io.orc.OrcSerde[col2,144],[col1,145L],[isnotnull(col1,145L),[col1,145L=4])”?这也是我的第一个想法。如果你有配置单元视图,你应该能够解析it@paul视图是多层次的(即连接两个视图的视图,这些视图连接一个或多个表),下面包含多个表。当您执行
df.explain()时,您不也会看到一些行说
HiveTableScan(…)
?它没有给出完整路径。奇怪。对我来说,我的输出看起来像这样``HiveTableScan[col1#145L,col2#144],HiveTableRelation
my#u db
my#u table
,org.apache.hadoop.hive.ql.io.orc.OrcSerde[col2#144],[col1#145L],[isnotnull(col1#145L),[col1#145L=4]```