【问题标题】:scala/spark filter dataframe with multiple conditions using sql使用sql的具有多个条件的scala / spark过滤数据框
【发布时间】:2021-07-26 17:35:46
【问题描述】:

我需要在 upsert 之前过滤 df。 df 没有索引列,每一行都不一样:

数据框如下所示:

+---+---+---+---+--------+---+
| Col1| Col2| Col3| Col4| Col5|
+---+---+---+---+--------+---+
|  Area| null|  null| null| null|
|  Data| null|  XRP 36| null| null|
|  2020-01-02| 2020-01-03| 2020-01-04| 2020-01-05| null|
|  SUM |  null| null| null| null|
|  0.5 |  0.8|  .5| 0.2| 13|
|  Area | null|  null| null| null|
|  Price | null|  null| null| null|
|  4000VBG | 4000VBG|  4000VBG| 4000VBG| null|
|  Data | null|  FDX 45| null| null|
|  2020-02-02 | 2020-02-03| 2020-02-04| 2020-02-05| null|
|  SUM |  null| null| null| null|
|  0.5 |  0.8|  .5| 0.2| 13|
+---+---+---+---+--------+

我需要这样的输出:

 +---+---+---+---+--------+---+
| Col1| Ccol2| Col3| Col4| C5|
+---+---+---+---+--------+---+
|  Data| null|  XRP 36| null| null|
|  2020-01-02| 2020-01-03| 2020-01-04| 2020-01-05| null|
|  0.5|  0.8|  .5| 0.2| 13|
|  Data| null|  FDX 45| null| null|
|  2020-02-02| 2020-02-03| 2020-02-04| 2020-02-05| null|
|  0.5|  0.8|  .5| 0.2| 13|
+---+---+---+---+--------+

因此,对于具有“数据”的每一行,我都需要数据、日期和值。

谢谢

【问题讨论】:

  • 第 1,2 和 3 行或其他如何有 5 列但只有 4 个值?
  • @koiralo 有些行有 5 列,有些有 4 列,有些只有 1 列
  • dataframe 怎么会有这个?你能分享一下 df.show(false) 结果吗?
  • 对不起,我有 25 列,第 5 列中没有值的行为空,将编辑我的问题
  • 并添加预期结果和逻辑以得到相应的结果

标签: sql scala apache-spark


【解决方案1】:

嗯嗯。 . .我想你只想not null

select t.*
from t
where col2 is not null or col3 is not null or col4 is not null;

【讨论】:

  • 有些行不为空,我不需要它们,df 有超过 20000 行,我有超过 1000 个 CSV 文件要读取,但对于我需要的行都有相同的结构
  • @Toni0123 。 . .这不是你在这里问的问题。这回答了您确实提出的问题。如果您有其他问题,请提出新问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-14
  • 1970-01-01
  • 2020-09-04
  • 2020-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多