policies_coeff = (test_policies_rl
.join(rates_table,(
(test_policies_rl.version==rates_table.version) &
(test_policies_rl.sub_class==rates_table.cover) &
(test_policies_rl.rf_1==rates_table.RF) &
(test_policies_rl.rl_1==rates_table.rating_factor_1)
),"left")
.withColumnRenamed("rating_factor_amount","rating_factor_amount_1")
.withColumnRenamed("rating_factor_coefficient","rating_factor_coefficient_1")
.withColumnRenamed("rating_factor_level", "rating_factor_level_1")
.withColumnRenamed("rating_factor_rate", "rating_factor_rate_1")
.drop(rates_table.version, rates_table.cover, rates_table.RF, rates_table.rating_factor_1, rates_table.rating_factor_2)
)
字符串
我想把这段代码写成一个循环,你在这段代码中看到的所有地方都是1,它可以是2,3,4,5,6,7......等,这取决于表中的数字列。
尝试使用F字符串
1条答案
按热度按时间58wvjzkj1#
我在SparkSql中尝试了以下方法作为示例
字符串
的数据
的
在上面的代码中,我使用
createOrReplaceTempView
方法创建了临时视图test_policies_rl和rates_table。变量num_columns被初始化,表示后续SQL查询生成的列总数。SQL查询模板base_query被定义,其在test_policies_rl和rates_rates上执行左连接。基于指定条件的表。创建循环以生成和执行针对不同数字的SQL查询for循环用于使用base_query动态生成和执行SQL查询。循环从1到num_columns。在循环中,base_query使用循环变量i进行格式化,以指定SQL查询中的相关列号。格式化后的查询使用spark.sql(query)执行,结果DataFrame使用show()方法显示。