Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagepy
# ruim
df = (
    df
    .select('foo', 'bar', 'foobar', 'abc')
    .filter(F.col('abc') == 123)
    .join(another_table, 'some_field')
)

# melhor
df = (
    df
    .select('foo', 'bar', 'foobar', 'abc')
    .filter(F.col('abc') == 123)
)

df = df.join(another_table, 'some_field', how='inner')

Expressões de várias linhas

A razão pela qual você pode encadear expressões é porque o Pyspark foi desenvolvido a partir do Spark, que vem das linguagens JVM. Isso significou que alguns padrões de design foram transportados, especificamente para cadeiabilidade. No entanto, Python não suporta expressões de várias linhas normalmente e as únicas maneiras são fornecer quebras de linhas explícitas ou colocar a expressão entre parênteses. Você só precisa fornecer quebras explícitas se a cadeia ocorrer no nó raiz. Por exemplo:

Code Block
languagepy
# ruim
df = df.filter(F.col('event') == 'executing')\
    .filter(F.col('has_tests') == True)\
    .drop('has_tests')

# bom
df = (
  df
  .filter(F.col('event') == 'executing')
  .filter(F.col('has_tests') == True)
  .drop('has_tests')
)

Para manter a consistência, envolva a expressão em um único bloco de parênteses e evite usar \

Info

Para maiores informações utilize a documentação oficial da Apache Spark :

https://spark.apache.org/docs/latest/sql-programming-guide.html