我的資料存盤在 df0
INFERENCE_WEEK='2022-04-23'
schema = StructType(
[
StructField("week_end_date", StringType(), True),
StructField("cust_name", StringType(), True),
.
.
.<blanked due to privacy concerns>
]
)
df0=spark.read.csv(path,
header=False,
schema=schema).alias('d0')
df1=df0.filter((df0.week_end_date==INFERENCE_WEEK)).select(["cust_name"]).distinct().alias('d1')
我注意到的是過濾正在洗掉它應該洗掉的更多 cust_name?對 pyspark 的特殊行為有任何想法嗎?
uj5u.com熱心網友回復:
它對我來說很好用
>>> df0=spark.read.csv("/path to/sample1.csv",header=False,schema=schema)
>>> df0.show()
------------- ----------
|week_end_date| cust_name|
------------- ----------
| 2022-04-23|samplename|
| 2022-04-25| abcrret|
| 2022-04-23|samplename|
| 2022-04-27| abcrtret|
| 2022-04-28| abcrtret|
| 2022-04-29| abctrtr|
| 2022-04-30| abctgrg|
| 2022-04-31| abcrttru|
------------- ----------
>>> df1=df0.filter((df0.week_end_date==INFERENCE_WEEK)).select(["cust_name"]).distinct().alias('d1')
>>> df1.show()
----------
| cust_name|
----------
|samplename|
----------
你能檢查一下 week_end_date 是否不包含前導和尾隨空格
uj5u.com熱心網友回復:
這不會發生在我身上。
df.show()
---- ----------
| C| D|
---- ----------
|foo1|2009-01-05|
|foo2|2009-01-05|
|foo3|2009-01-05|
|foo4|2009-01-06|
|foo5|2009-01-07|
|foo1|2009-01-05|
|foo2|2009-01-05|
|foo3|2009-01-05|
|foo4|2009-01-06|
|foo5|2009-01-07|
---- ----------
INFERENCE_WEEK='2009-01-05'
df.where(col('D')==f'{INFERENCE_WEEK}').select('C').distinct().show()
----
| C|
----
|foo1|
|foo2|
|foo3|
----
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/486891.html
上一篇:pyspark資料框:填充具有不同資料型別的選定列的值
下一篇:過濾特定記錄和更早使用視窗
