使用带有 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'))
我正在使用 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'))