@Jyoti珍:
1)是的,它可以通過一個CTE(公共表表達式)火花JDBC SQL語句。然而,ct通過火花JDBC的能力取決於您所使用的版本的火花。
火花2。x版本,不支持ct在火花JDBC。然而,在火花3。x版本,支持ct。因此,如果您使用的是火花3.4,您應該能夠通過一個CTE通過火花JDBC SQL語句。使用ct在火花引發JDBC 3.4,你需要確保你使用JDBC選項中的“查詢”選項
這裏有一個例子Python代碼片段使用公共表表達式(cte)在火花引發JDBC 3.4:“
從pyspark。sql導入SparkSession #創建SparkSession火花= SparkSession。builder \ .appName (CTE在火花與JDBC 3.4) \ .getOrCreate() #火花配置為使用JDBC驅動程序spark.conf.set (“spark.sql.catalog.jdbc。驅動程序”、“com.mysql.jdbc.Driver”) #創建一個臨時視圖使用CTE火花。與my_cte sql(“””(從my_table col1選擇,則col2 col3 = some_value)選擇col1, AVG (col2) avg_col2 my_cte GROUP BY col1”" ") .createOrReplaceTempView (my_temp_view) #使用臨時視圖查詢遠程數據庫通過JDBC jdbc_df =火花。讀\ .format (jdbc) \ .option (“url”,“jdbc: mysql: / / localhost: 3306 / my_db”) \ .option(“數據表”,“my_temp_view”) \ .option(“用戶”、“my_username”) \ .option(“密碼”、“my_password”) \ .load() #顯示結果jdbc_df.show ()
2)一些示例如下
高級功能:SQL Server:選擇高級1 * my_table Azure磚:SELECT * FROM my_table限製1日期功能:SQL Server:返回(天7 my_date)添加日期Azure磚:7天DATE_ADD (my_date,間隔7天)添加7天一個日期字符串功能:SQL Server: Substring (my_string 1 3)獲得的第一個3個字符字符串Azure磚:SUBSTR (my_string, 1, 3)字符串的前3個字符字符串連接:SQL服務器:選擇“你好”+“世界”來連接兩個字符串Azure磚:選擇CONCAT(‘你好’,‘世界’)來連接兩個字符串格式化日期:SQL服務器:選擇格式(my_date, dd / MM / yyyy)格式化日期dd / MM / yyyy Azure磚:選擇DATE_FORMAT (my_date, dd / MM / yyyy)格式dd / MM / yyyy日期