É possível particionar as linhas no quadro de dados usando a função da janela. Está disponível no Pyspark.SQL.janela módulo.
Sintaxe:
dataframe_obj.withcolumn ("lag_column", lag ("coluna", deslocamento).sobre (partição))São necessários dois parâmetros:
Passos:
Sintaxe:
partição = janela.Partionby ("coluna").ordem ("coluna")Podemos solicitar os dados particionados com a coluna particionada ou qualquer outra coluna.
Agora, você pode usar a função lag () nas linhas particionadas usando o sobre() função.
Adicionamos uma coluna para armazenar o número da linha usando o withcolumn () função.
Sintaxe:
dataframe_obj.withcolumn ("lag_column", lag ("coluna", deslocamento).sobre (partição))Aqui, o nome especifica o nome da linha e o dataframe_obj é o nosso pyspark dataframe.
Vamos implementar o código.
Exemplo 1:
Aqui, criamos um quadro de dados Pyspark que possui 5 colunas - ['sujeito_id', 'nome', 'idade', 'tecnologia1', 'tecnologia2'] com 10 linhas e particionando as linhas com base em Technology1 Usando a função da janela. Depois disso, atrasamos 1 fila.
Importar PysparkSaída:
Explicação:
Na primeira saída, representa os dados reais presentes no quadro de dados. Na segunda saída, a partição é feita com base no Technology1 coluna.
O número total de partições é 4.
Partição 1:
O .A rede ocorreu duas vezes na primeira partição. Desde que especificamos o deslocamento de lag como 1, o primeiro .O valor líquido é nulo e o próximo .O valor líquido é o valor anterior da linha subject_id - 46.
Partição 2:
Hadoop ocorreu uma vez na segunda partição. Então, lag é nulo.
Partição 3:
Oracle ocorreu quatro vezes na terceira partição.
Para o primeiro oráculo, o lag é nulo.
Para o segundo Oracle, o valor do atraso é 4 (já que o valor anterior da linha sujeito_id é 4).
Para o terceiro oráculo, o valor do atraso é 4 (já que o valor anterior da linha sujeito_ID é 4).
Para o quarto oráculo, o valor do atraso é 12 (já que o valor anterior da linha sujeito_ID é 12).
Partição 4:
PHP ocorreu três vezes na quarta partição.
O valor de atraso para o 1º PHP é nulo.
O valor de atraso para o 2º PHP é 4 (já que o valor da linha anterior_ID é 4).
O valor de atraso para o 3º PHP é 4 (já que o valor da linha anterior_id é 4).
Exemplo 2:
Atrasar as linhas por 2. Certifique -se de criar o Pyspark DataFrame, como visto no Exemplo 1.
# importe a função da janelaSaída:
Explicação:
A partição é feita com base no Technology1 coluna. O número total de partições é 4.
Partição 1:
O .A rede ocorreu duas vezes na primeira partição. Como especificamos o deslocamento de lag como 2, o deslocamento é nulo para ambos os valores.
Partição 2:
Hadoop ocorreu uma vez na segunda partição. Então, lag é nulo.
Partição 3:
Oracle ocorreu quatro vezes na terceira partição.
Para o primeiro e o segundo oráculo, o lag é nulo.
Para o terceiro oráculo, o valor do atraso é 4 (já que as 2 linhas anteriores devem ser 4).
Para o quarto oráculo, o valor do atraso é 4 (já que as 2 linhas anteriores, sujeito_id, o valor é 4).
Partição 4:
PHP ocorreu três vezes na quarta partição.
O valor de atraso para o 1º e o 2º PHP é nulo.
O valor de atraso para o 3º PHP é 4 (já que as 2 linhas anteriores, sujeito_id, o valor é 4).
Exemplo 3:
Fique as linhas em 2 com base na coluna de idade. Certifique -se de criar o Pyspark DataFrame, como visto no Exemplo 1.
# importe a função da janelaSaída:
Explicação:
A partição é feita com base no Technology1 A coluna e o atraso são definidos com base na coluna AGE. O número total de partições é 4.
Partição 1:
O .A rede ocorreu duas vezes na primeira partição. Como especificamos o deslocamento de lag como 2, o deslocamento é nulo para ambos os valores.
Partição 2:
Hadoop ocorreu uma vez na segunda partição. Então, lag é nulo.
Partição 3:
Oracle ocorreu quatro vezes na terceira partição.
Para o primeiro e o segundo oráculo, o lag é nulo.
Para o terceiro oráculo, o valor do atraso é 21 (o valor da idade das duas linhas anteriores é 21).
Para o quarto oráculo, o valor do atraso é 22 (o valor da idade das duas linhas anteriores é 22).
Partição 4:
PHP ocorreu três vezes na quarta partição.
O valor de atraso para o 1º e o 2º PHP é nulo.
O valor de atraso para o 3º HP é 21 (o valor da idade das duas linhas anteriores é 21).
Conclusão
Aprendemos como obter os valores de atraso no quadro de dados do Pyspark em linhas particionadas. A função lag () no Pyspark está disponível no módulo de janela que é usado para retornar os valores das linhas anteriores às linhas atuais. Aprendemos os diferentes exemplos definindo as diferentes compensações.