У меня есть кадр данных StructField со смешанной схемой (DoubleType, StringType, LongType и т. д.).
Я хочу «перебрать» все столбцы, чтобы вернуть сводную статистику. Например:
set_min = df.select([
fn.min(self.df[c]).alias(c) for c in self.df.columns
]).collect()
Это то, что я использую, чтобы найти минимальное значение в каждом столбце. Это прекрасно работает. Но когда я пытаюсь найти что-то подобное, чтобы найти Nulls:
set_null = df.filter(
(lambda x: self.df[x]).isNull().count()
).collect()
Я получаю TypeError: condition should be string or Column, что имеет смысл, я передаю функцию.
или с пониманием списка:
set_null = self.df[c].alias(c).isNull() for c in self.df.columns
Затем я пытаюсь передать ему SQL-запрос в виде строки:
set_null = df.filter('SELECT fields FROM table WHERE column = NUL').collect()
Я получил:
ParseException: "\nmismatched input 'FROM' expecting <EOF>(line 1, pos 14)\n\n== SQL ==\nSELECT fields FROM table WHERE column = NULL\n--------------^^^\n"
Как я могу передать свою функцию как «строку или столбец», чтобы я мог использовать filter или where в качестве альтернативы, почему чистый оператор SQL не работает?