найти, есть ли в столбце (называемом текстом) слово pyspark - PullRequest
1 голос
/ 20 июня 2020

У меня есть df, и мне нужно посчитать, сколько раз в каждой группе было слово «да». мне нужно найти слово (не как подстроку), и если рядом с ним стоит знак препинания, мне также нужно посчитать это, например:

id  group  text
1   a       hey there
2   c       no you can
3   a       yes yes yes
4   b       yes or no
5   b       you need to say yes.
6   a       yes you can
7   d       yes!
8   c       no&
9   b       ok

результат:

group  count
a      2
b      2
c      0
d      1

я пробовал это:

sql_q = spark.sql("select group, count(*) as count from my_table where text LIKE ' yes' or text LIKE 'yes ' or text LIKE ' yes ' group by group")

Ответы [ 2 ]

1 голос
/ 21 июня 2020

Запрос остается таким же в pyspark или scala. Синтаксис Pyspark

sqlQ = spark.sql(
      """
        select group, sum(
         case when (text rlike '(?i)^.*yes.*$') then 1 else 0 end
        ) as count
        from my_table group by group
      """)
sqlQ.show(20,False)
1 голос
/ 20 июня 2020

Попробуйте это -

val sql_q = spark.sql(
      """
        |select group, sum(
        |  case when (text rlike '(?i)^.*yes.*$') then 1 else 0 end
        | ) as count
        |from my_table group by group
      """.stripMargin)
    sql_q.show(false)

    /**
      * +-----+-----+
      * |group|count|
      * +-----+-----+
      * |a    |2    |
      * |c    |0    |
      * |d    |1    |
      * |b    |2    |
      * +-----+-----+
      */

...