如何使用SQL星火一个数据帧列中获取值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用SQL星火一个数据帧列中获取值?相关的知识,希望对你有一定的参考价值。
现在我与星火/斯卡拉工作,我想加入多个dataframes得到预期的输出。数据输入是CSV文件与通话记录的信息。这些输入主要领域。
a_number:字符串=为原点呼叫号码。
area_code_a:字符串=是a_number区号。
prefix_a:字符串=是a_number前缀。
b_number:字符串=是目的地呼叫号码。
区域代码B:强=是b_number区号。
prefix_b:字符串=是b_number前缀。
cause_value:字符串=是呼叫最终状态。
val dfint = ((cdrs_nac.join(grupos_nac).where(col("causevalue") === col("id")))
.join(centrales_nac, col("dpc") === col("pointcode_decimal"), "left")
.join(series_nac_a).where(col("area_code_a") === col("codigo_area") &&
col("prefix_a") === col("prefijo") &&
col("series_a") >= col("serie_inicial") &&
col("series_a") <= col("serie_final"))
.join(series_nac_b, (
((col("codigo_area_b") === col("area_code_b")) && col("len_b_number") == "8") ||
((col("codigo_area_b") === col("area_code_b")) && col("len_b_number") == "10") ||
((col("codigo_area_b") === col("codigo_area_cent")) && col("len_b_number") == "7")) &&
col("prefix_b") === col("prefijo_b") &&
col("series_b") >= col("serie_inicial_b") &&
col("series_b") <= col("serie_final_b"), "left")
这产生与所处理的呼叫数据记录,包括列“len_b_number”,这意味着b_number字段的长度的多个输出文件。
我在做一些测试我已经发现,由于某种原因,表达“栏(” len_b_number“)”被返回列名“len_b_number”代替长度值其是7,8或10。这意味着,喂食col(“len_b_number “)== 7或山坳(” len_b_number“)== 8或山坳(” len_b_number“)== 10个条件永远不会起作用,因为代码将始终与列名比较。
这时输出为空白,因为山坳(“len_b_number”)犯规匹配7,8或10,我会想知道,如果ypou可以帮助了解如何提取此列的值。
谢谢
答案
尝试使用===代替==。
我不能让你的错误。
&& col("len_b_number") == "8"
应该:
&& col("len_b_number") === "8"
以上是关于如何使用SQL星火一个数据帧列中获取值?的主要内容,如果未能解决你的问题,请参考以下文章
如何从数据帧列中的路径读取 AWS 上 pyspark 中的许多 Json 文件?