我正在尝试从 databricks 中的数据库中的每个表获取最小和最大日期。
我已经开始执行以下操作:
results =[]
tables_list = spark.sql('show tables in table')
for row in tables_list.collect():
tablename = row.tableName
min_update = spark.sql(f"SELECT MIN(date) FROM table.{tablename}").collect()[0][0]
max_update = spark.sql(f"SELECT MAX(date) FROM table.{tablename}").collect()[0][0]
results.append((tablename,min_update,max_update))
df_update = spark.createDataFrame(results, schema = ['tablename', 'min_update', 'max_update'])
但是当我 df_update.display()
时,我只得到最后一个表,我希望其中有 60 个表,每个表都有每行表的最大和最小日期。
最佳答案
由于您想要从所有表中获取最大和最小日期,因此需要在 for 循环内包含追加操作。
请看下面的内容,我修改了相同的代码并得到了所需的结果。以下是执行 show table 后的数据帧:
results =[]
tables_list = spark.sql('show tables in default')
tables_list.show()
- 现在我已经在循环内对结果数组使用了附加操作并得到了预期的结果。
for row in tables_list.collect():
tablename = row.tableName
#default is the name of my database and dt is date column
min_update = spark.sql(f"SELECT MIN(dt) FROM default.{tablename}").collect()[0][0]
max_update = spark.sql(f"SELECT MAX(dt) FROM default.{tablename}").collect()[0][0]
results.append((tablename,min_update,max_update))
df_update = spark.createDataFrame(results, schema = ['tablename', 'min_update', 'max_update'])
df_update.display()
关于azure - 从所有表的 azure databricks 数据库列获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75064591/