TypeError: объект «Столбец» не может быть вызван

Я пытаюсь запустить этот код в pyspark, и появляется следующая ошибка:

data.filter(
    (((F.col('post_v1_web_page_name') == 'escritorio:publica:general:formulario:formulario crm tarjetas bbva:confirmacion') | (F.col('post_v1_web_page_name') == 'escritorio:publica:general:formulario:formulario crm tarjetas bbva paca:confirmacion') |  (F.col('post_v1_web_page_name') == 'escritorio:publica:general:formulario:tarjeta tres meses sin:confirmacion') | (F.col('post_v1_web_page_name') == 'escritorio:publica:general:formulario:tarjetas premium:confirmacion') | (F.col('post_v1_web_page_name') == 'escritorio:publica:general:formulario:tarjeta repsol credito:confirmacion') | (F.col('post_v1_web_page_name') == 'escritorio:publica:personas:tarjeta repsol:credito:tarjetas:confirmacion') | (F.col('post_v1_web_page_name') == 'escritorio:privada:particulares:tarjeta credito:3 estudio de la solicitud:1 direccion entrega'))
    | ((F.col('post_v1_web_page_name').like("%formulario:formulario%")) & (F.col('post_v1_web_page_name').like("%tarjeta%")) & (F.col('post_v1_web_page_name').like("%crm%")) & (F.col('post_v1_web_page_name').like("%confirma%")))
    | ((F.col('post_v1_web_page_name').like("%escritorio:publica:personas%")) & (F.col('post_v1_web_page_name').like("%tarjetas:credito%")) & (F.col('post_v1_web_page_name').like("%confirmacion%")))
    | ((F.col('post_v1_web_page_name').like("%responsive-tablet:publica:personas%")) & (F.col('post_v1_web_page_name').like("%tarjetas:credito%")) & (F.col('post_v1_web_page_name').like("%confirmacion%"))))
    | (((((F.col('post_v1_web_page_name').like("%formulario:tarjetas de credito%")) | (F.col('post_v1_web_page_name').like("%formulario:tarjetas repsol%")) | (F.col('post_v1_web_page_name').like("%web-movil:publica:general:formulario:tarjeta repsol credito%")) | (F.col('post_v1_web_page_name').like("%web-movil:tarjetas:tarjeta despues%")) | (F.col('post_v1_web_page_name').like("%web-movil:formulario:tarjeta viat bbva%")) | (F.col('post_v1_web_page_name').like("%web-movil:publica:particulares:formulario:tarjeta viat%")) | (F.col('post_v1_web_page_name').like("%web-movil:formulario:tarjeta refe dorada%")) | (F.col('post_v1_web_page_name').like("%web-movil:formulario:tarjetas motor credito bbva%")) | (F.col('post_v1_web_page_name').like("%web-movil:formulario:credito tarjeta viajes movil%")) | (F.col('post_v1_web_page_name').like("%web-movil:formulario:tarjetas de credito tarjetas bbva")) | (F.col('post_v1_web_page_name').like("%web-movil:formulario:tarjetas de credito 3 meses sin%")) | (F.col('post_v1_web_page_name') == 'responsive-mobile:publica:personas:tarjetas:credito:tarjeta respsol:finalizado') | (F.col('post_v1_web_page_name') == 'responsive:mobile:publica:personas:tarjeta repsol:credito:tarjetas:nombre:finalizado'))
    & (F.col('post_v1_web_page_name').like("%finalizado%"))
    & (F.col('post_v1_web_page_name').notlike("%debito%"))) 
    | ((F.col('post_v1_web_page_name') == 'web-movil:formulario:otros:2 finalizado') & (F.col('post_v47_appl_typology_name') == 'TMM')) 
    | ((F.col('post_v1_web_page_name').like("%publica:personas%")) & (F.col('post_v1_web_page_name').like("%tarjetas:credito%")) & (F.col('post_v1_web_page_name').like("%finalizado%")))
    | ((F.col('post_v1_web_page_name').like("%card request form%")) & (F.col('post_v1_web_page_name').like("%confirmation%")))
      )))

person Azofra19    schedule 09.10.2020    source источник


Ответы (1)


Эта ошибка означает, что вы пытаетесь вызвать недоступную функцию для одного или нескольких экземпляров F.col. Например, см. этот вопрос. Я думаю, что это может быть notlike как насколько мне известно, это недоступно в Pyspark.

Общее замечание: состояние, которое вы разрабатываете, очень сложно поддерживать и понимать для других разработчиков и, возможно, для вас. Я бы рекомендовал разбить условия на несколько переменных и объединить их шаг за шагом. например

condition_is_required_pattern = F.col('post_v1_web_page_name').like("%finalizado%") | F.col('post_v1_web_page_name').like("%otherRegex%")
condition_not_illegal_pattern = ~ F.col('post_v1_web_page_name').like("%debito%")
data_filterd = data.filter(
      condition_is_required_pattern 
      & condition_not_illegal_pattern
)
person mpSchrader    schedule 09.10.2020