azure - 从所有表的 azure databricks 数据库列获取值

标签 azure loops datatables databricks

我正在尝试从 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()

enter image description here

  • 现在我已经在循环内对结果数组使用了附加操作并得到了预期的结果。
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()

enter image description here

关于azure - 从所有表的 azure databricks 数据库列获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75064591/

相关文章:

c++ - 尽管达到退出条件,循环仍在重复

javascript - DataTables - 使用 fnUpdate 更新行替换不同的行

azure - 无法更新托管服务 Windows Azure

Azure Cloud Shell 无法请求终端

javascript - iMacros 循环计数器的预定义值

c - For 循环交替 printf

azure - 我需要克隆 Azure 存储帐户用于暂存槽吗?

c# - 在 Azure Web 和辅助角色中共享 SQL Server CE 数据库

javascript - 为 dataTable "Show entries"和 "Search"设置表头“输入作为响应视口(viewport)的固定中心

javascript - AJAX 调用从 ASP.NET Core Web api 动态构建 DataTable