我想列出Azure数据块中每个数据库中的所有表。
所以我希望输出看起来像这样:
Database | Table_name
Database1 | Table_1
Database1 | Table_2
Database1 | Table_3
Database2 | Table_1
etc..
这是我目前的情况:
from pyspark.sql.types import *
DatabaseDF = spark.sql(f"show databases")
df = spark.sql(f"show Tables FROM {DatabaseDF}")
#df = df.select("databaseName")
#list = [x["databaseName"] for x in df.collect()]
print(DatabaseDF)
display(DatabaseDF)
df = spark.sql(f"show Tables FROM {schemaName}")
df = df.select("TableName")
list = [x["TableName"] for x in df.collect()]
## Iterate through list of schema
for x in list:
### INPUT Required: Change for target table
tempTable = x
df2 = spark.sql(f"SELECT COUNT(*) FROM {schemaName}.{tempTable}").collect()
for x in df2:
rowCount = x[0]
if rowCount == 0:
print(schemaName + "." + tempTable + " has 0 rows")
但我还没得到结果。
2条答案
按热度按时间gkl3eglg1#
有一个
catalog
属性可以激发会话,可能是您正在寻找的:listDatabases
返回您拥有的数据库列表。listTables
返回特定数据库名称的表列表。你可以这样做,例如:
以获取数据库和表的列表。
编辑:(thx @Alex Ott)即使这个解决方案工作正常,也相当慢。直接使用一些sql命令,如
show databases
或show tables in ...
,应该会更快。2lpgd9682#