取消
顯示的結果
而不是尋找
你的意思是:

列相關異常在SQL UDF使用UDF時參數。

Johan_Van_Noten
新的貢獻者三世

環境

Azure磚10.1,包括3.2.0火花

場景

我想要檢索的平均兩個時間戳之間的一係列的值,使用一個SQL UDF。

平均顯然隻是一個例子。在真實的場景中,我想隱藏一些額外的查詢SQL UDF背後的複雜性。

試(工作)

% sql SELECT avg(溫度)從oventemperatures averageTemperature ovenTimestamp to_timestamp之間(“1999-01-01”)和to_timestamp (“2021-12-31”)

這可能在一個UDF。

創建函數averageTemperatureUDF (ovenID字符串,開始時間的時間戳,endTime時間戳)返回讀取SQL數據浮動SQL安全定義者返回選擇avg (ovenTemperature)從oventemperatures averageTemperature ovenTimestamp to_timestamp之間(“1999-01-01”)和to_timestamp (“2021-12-31”)

試(失敗)

當我想使用UDF的過濾條件參數,函數定義失敗。

創建函數averageTemperatureUDF (ovenID字符串,開始時間的時間戳,endTime時間戳)返回讀取SQL數據浮動SQL安全定義者返回選擇avg (ovenTemperature)從oventemperatures averageTemperature ovenTimestamp開始時間和endTime之間

錯誤消息抱怨“相關列”。

錯誤的SQL語句:AnalysisException:相關列是不允許謂詞(spark_catalog.default.oventemperatures.ovenTimestamp > =外(averageTemperatureUDF.startTime)) (spark_catalog.default.oventemperatures.ovenTimestamp < =外(averageTemperatureUDF.endTime)):總(avg (ovenTemperature # 275) averageTemperature # 9299) + -過濾器((ovenTimestamp # 273 > =外(開始時間# 9301))和(ovenTimestamp # 273 < =外(endTime # 9302))) + - SubqueryAlias spark_catalog.default.oventemperatures + -關係default.oventemperatures [ovenTimestamp # 273, (…), ovenTemperature # 275, (……)] JDBCRelation (OvenTemperatures) (numPartitions = 1)

問題(s)

似乎不接受使用UDF的內參數表達式。

  • 這是一個正確的結論嗎?
  • 這種限製的理由嗎?
  • 替代解決這個嗎?
1接受解決方案

接受的解決方案

jose_gonzalez
主持人
主持人

嗨@Johan Van Noten,

似乎有一個問題的列是你的“地方”條款的一部分。這些列UDF本身的一部分。我想推薦檢查以下文檔

1)https://docs.www.eheci.com/spark/latest/spark-sql/language-manual/sql-ref-syntax-ddl-create-functio..。

2)https://docs.www.eheci.com/spark/latest/spark-sql/language-manual/sql-ref-functions-udf-scalar.html

3)https://docs.www.eheci.com/spark/latest/spark-sql/language-manual/sql-ref-functions-udf-aggregate.h..。

希望這些鏈接可能有助於解決這個問題。

謝謝你!

在原帖子查看解決方案

19日回複19

匿名
不適用

你好,@Johan Van Noten !

我的名字是風笛手和我這裏的版主之一。歡迎來到社區和謝謝你的問題。讓我們給它一段時間,看看社區回應。我們可以循環回這個以後如果我們需要。:slightly_smiling_face:

匿名
不適用

@Johan Van Noten——我很抱歉延遲。我們的中小企業正在運行。:disappointed_face:

我會撞到他們。堅持下去..

jose_gonzalez
主持人
主持人

嗨@Johan Van Noten,

似乎有一個問題的列是你的“地方”條款的一部分。這些列UDF本身的一部分。我想推薦檢查以下文檔

1)https://docs.www.eheci.com/spark/latest/spark-sql/language-manual/sql-ref-syntax-ddl-create-functio..。

2)https://docs.www.eheci.com/spark/latest/spark-sql/language-manual/sql-ref-functions-udf-scalar.html

3)https://docs.www.eheci.com/spark/latest/spark-sql/language-manual/sql-ref-functions-udf-aggregate.h..。

希望這些鏈接可能有助於解決這個問題。

謝謝你!

洗手間
新的貢獻者三世

嗨@Johan Van Noten

你能解決這個問題嗎?我困在一個相同的問題。請如果你能指導我如果你能解決這個問題。

謝謝你!

Baidu
map