我正在尝试使此循环生效,在该循环中,我将roximate_count_distinct的值与阈值进行比较。当distance_count为<2时,我想执行if语句。 但是即使我打印大约时,它也会始终返回“ NULL”(正确的结果(小于2))。我在做什么错了?
for col in s:
approx = df.agg(approx_count_distinct(col).alias("count"))
if approx.collect()[0] < 2:
print(col)
答案 0 :(得分:1)
您要在ROW类型上执行IF条件,请问您可以检查一下rox.collect()[0]的类型是什么,以支持您正在执行的if条件。
type(approx.collect()[0])
您需要将其更改为**if approx.collect()[0][0] < 2:
**
尝试一下,它应该可以工作:
s = ['a','b','c','d','e']
for col in s:
approx = spark.sql("select 1 AS a")
if approx.collect()[0][0] < 2:
print(col)
答案 1 :(得分:-1)
我最终以这种方式这样做:
for col in s:
approx = df.agg(approx_count_distinct(col).alias("count"))
if (approx.select(F.col("count")).rdd.flatMap(lambda x: x).collect()[0]) < 2:
print(col)