使用带有 python 公式的 Databricks 数据框创建一个新的计算字段写回 sql table

Using a Databricks dataframe with python formula to create a new calculated field write back to sql table

我正在使用 Databricks 在 spark.sql 中构建我的数据集,现在我的数据框已格式化。我现在想创建一个新列并将 python 公式应用于此数据框,然后最后将此数据框写入 table.

我尝试了几种方法,但需要一些帮助才能完成。

Databricks(python 笔记本)- 数据集

%python
df_my_dataframe.createOrReplaceTempView("MyTable")

from scipy.stats import norm, chi2
def z(variable1, prob):
  if variable1 < 400:
  z_calc = [i for i in range (0,500) if chi2.sf(2 * variable1, 2 * i + 2) >= prob][0]  
else:
  z_calc = int(norm.ppf(prob,variable1,sqrt(variable1)))
return z_calc

df = spark.sql("select * from MyTable")
something = udf(lambda x: z(x['variable1'], x['prob']))

df = df.withColumn('test',something('variable1','prob'))
df.write.mode("overwrite").saveAsTable("MyDB.MyTable")

好的,成功解决了。是 udf 把我扔了。

from scipy.stats import norm, chi2
import pyspark.sql.functions as f
from pyspark.sql.types import *

def fun_z(variable1, prob):
 if variable1 < 400:
z_calc = [i for i in range (0,500) if chi2.sf(2 * variable1, 2 * i + 2) >= prob] 
[0]  
 else:
z_calc = int(norm.ppf(prob,variable1,sqrt(variable1)))
return z_calc

df = spark.sql("select * from MyTable")

z_calc = f.udf(fun_z, IntegerType())

df = 
 df.withColumn("z_cal",z_calc('name_of_column_in_MyTable_variable1','name_of_column_in_MyTable_prob'))