描述来自Azure Databricks的雪花表



我想为雪花表发出DESC TABLESQL命令,并使用Azure Databricks,但我不能完全弄清楚!我没有得到任何错误,但也没有得到任何结果。下面是我使用的Python代码:

options_vcp = {
"sfUrl": snowflake_url,
"sfUser": user,
"sfPassword": password,
"sfDatabase": db,
"sfWarehouse": wh,
"sfSchema": sch
}
sfUtils = sc._jvm.net.snowflake.spark.snowflake.Utils
sfUtils.runQuery(options_vcp, "DESC TABLE myTable")

我可以使用"sfDatabase","sfWarehouse"等值下载Snowflake表,因此它们似乎是正确的。我可以在Snowflake中运行DESC TABLE命令并得到正确的结果。但是我从databricks得到的唯一输出是:

Out[1]: JavaObject id=o315

有人知道如何显示这个JavaObject或知道从Databricks运行DESC TABLE的不同方法吗?

From doc:执行DDL/DML SQL语句:

runQuery方法只返回TRUE或FALSE。它适用于不返回结果集的语句,例如像CREATE TABLE这样的DDL语句和像INSERT、UPDATE和DELETE这样的DML语句。对于返回结果集的语句,如SELECT或SHOW,它是没有用的。

另一种方法是使用INFORMATION_SCHEMA。列视图:

df = spark.read.format(SNOWFLAKE_SOURCE_NAME)
.options(sfOptions)
.option("query", "SELECT * FROM information_schema.columns WHERE table_name ILIKE 'myTable'")
.load()

相关:将数据从雪花移动到Spark:

当使用dataframe时,Snowflake连接器只支持SELECT查询。

使用笔记

目前,连接器在使用dataframe时不支持其他类型的查询(例如SHOW或DESC或DML语句)。

我建议在select语句中使用get_ddl()来获取对象定义:

https://docs.snowflake.com/en/sql-reference/functions/get_ddl.html

相关内容

  • 没有找到相关文章