如何使用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 文件?

如何使用 SQL 获取列中每个分区的第一个和最后一个值

如何从 SQL Server 存储过程中的 3 列中获取 MAX 值?

如何在 QT C++ 中从表的列中获取 SQL 中的所有值

合并两个TRUE / FALSE数据帧列,仅保留TRUE

如何获取列中每个不同值的计数? [复制]