Enviando estatísticas de um DataFrame para o BigQuery usando as estatísticas Yandex.Direct como um exemplo

Neste artigo, falarei sobre como trouxe estatísticas em todo o contexto em um só lugar usando o BigQuery e o Data Studio

Eu precisava visualizar dados em todas as fontes de tráfego.

Para esta tarefa, eu uso o Data Studio. O Google Ads está sendo puxado para lá de uma maneira excelente, mas com o Yandex Direct tudo fica mais complicado.

Eu escolhi o método semi-manual de estatísticas estatísticas para mim: receber e enviar estatísticas do meu computador.

Recebo estática diariamente em várias seções em um DataFrame.



E isso é ótimo porque o pandas possui uma biblioteca pandas_gbq que pode enviar DataFrames para o BigQuery.

Quais estatísticas armazenar no BigQuery


Para começar, vamos decidir quais seções das estatísticas enviaremos.
Como podemos armazenar muitas informações no BigQuery, elaborei estatísticas para mim em termos de dias.

Também precisamos levar em consideração o fato de que precisamos obter estatísticas por pelo menos um mês para reescrever, pois os sistemas de publicidade atualizam as estatísticas antigas devido a um clique.

Portanto, por enquanto, não uso estatísticas em termos de chaves para mim, pois geralmente são redundantes.
Vou contar tudo sobre o exemplo das estatísticas diárias no contexto da República do Cazaquistão. (colunas: data e PK)

A seguir, falaremos sobre como modificar o DataFrame para que ele continue.

DataFrame de modificação



Problema 1


Para alguns RCs, obteremos campos vazios em fatores comportamentais e conversões



Para contornar esse problema, você precisa substituir os contras por "0".

f['Conversions'].replace(['--'],[0],inplace=True) f['CostPerConversion'].replace(['--'],[0],inplace=True) f['ConversionRate'].replace(['--'],[0],inplace=True) f['AvgPageviews'].replace(['--'],[0],inplace=True) f['BounceRate'].replace(['--'],[0],inplace=True) 

E atribua um tipo de dados numérico.

 f[["Conversions","CostPerConversion","ConversionRate","AvgPageviews","BounceRate"]]=f[["Conversions","CostPerConversion","ConversionRate","AvgPageviews","BounceRate"]].apply(pd.to_numeric) 

Problema 2


Adicione uma coluna indexada separadamente. Se enviarmos um DataFrame ou examinarmos o tipo de dados com dtipe, veremos que não há coluna com datas.

Para corrigir isso, crie uma coluna que será igual à coluna indexada.

 f['Date']=f.index 


Obtenha o próximo DataFrame



Enviando um DataFrame para o BigQuery


 pandas_gbq.to_gbq(f,' .',project_id=' ',if_exists='replace') 

Indicamos o nome do DataFrame, o nome do conjunto de dados, o nome do arquivo (talvez ainda não exista), o nome do projeto e como o arquivo será gravado (no nosso caso, o arquivo será completamente substituído).

Temos o seguinte no BigQuery:



Resta apenas visualizar os dados no DataStudio. Código final:

 f['Date']=f.index f['Conversions'].replace(['--'],[0],inplace=True) f['CostPerConversion'].replace(['--'],[0],inplace=True) f['ConversionRate'].replace(['--'],[0],inplace=True) f['AvgPageviews'].replace(['--'],[0],inplace=True) f['BounceRate'].replace(['--'],[0],inplace=True) f[["Conversions", "CostPerConversion","ConversionRate","AvgPageviews","BounceRate"]] = f[["Conversions", "CostPerConversion","ConversionRate","AvgPageviews","BounceRate"]].apply(pd.to_numeric) pandas_gbq.to_gbq(f, 'YD_Days.my_client_rk', project_id='my_project',if_exists='replace') 

Obrigado pela atenção!

Source: https://habr.com/ru/post/pt454172/


All Articles