簡體   English   中英

將 SQL 查詢的結果寫入 Databricks 中的 Temp 視圖

[英]Writing results of SQL query to Temp View in Databricks

我想根據 SQL 查詢的結果創建一個臨時視圖——這聽起來像是一件基本的事情,但我無法讓它工作,也不明白哪里出了問題。

這是我的 SQL 查詢 - 它工作正常並返回 Col1。

%sql
SELECT
  Col1
  FROM
  Table1
    WHERE EXISTS (
      select * 
        from TempView1)

我想將結果寫在另一個我可以查詢的表中。 因此我這樣做:

df = spark.sql("""
SELECT
  Col1
  FROM
  Table1
    WHERE EXISTS (
      select * 
        from TempView1)""")

好的

df

Out[28]: 數據幀[Col1: bigint]

df.createOrReplaceTempView("df_tmp_view")

好的

%sql
select * from df_tmp_view

SQL 語句中的錯誤:AnalysisException:找不到表或視圖:df_tmp_view; 第 1 行,第 14 行; '項目 [*] +- 'UnresolvedRelation [df_tmp_view], [], false

display(affected_customers_tmp_view)

NameError:名稱“df_tmp_view”未定義

我究竟做錯了什么? 盡管我在上面僅定義了一個命令,但我不明白該名稱未定義的錯誤。 此外 SQL 查詢正在工作並返回數據......所以我錯過了什么?

謝謝 !

您需要獲取視圖的全局上下文,例如在您的情況下:

global_temp_db = spark.conf.get("spark.sql.globalTempDatabase")
display(table(global_temp_db + "." + 'df_tmp_view'))

文件

例如:

df_pd = pd.DataFrame(
  {
    'Name' : [231232,12312321,3213231],
  }
)

df = spark.createDataFrame(df_pd)

df.createOrReplaceGlobalTempView('test_tmp_view')

global_temp_db = spark.conf.get("spark.sql.globalTempDatabase")
display(table(global_temp_db + "." + 'test_tmp_view'))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM