Pandas.Dataframe.merge v Linq Присоединиться - PullRequest
0 голосов
/ 12 июня 2019

Необходимость перенести некоторый код Python, который считывает два представления дампа GA за заданный период времени, а затем объединяет их.Работает отлично.Обнаружение того, что мой C # висит на Join

Python

private_key_loc = <<key>>

sql = <<bigquery>>
impressions_all = pd.read_gbq(<<bigquery>>,private_key = private_key_loc)

 sql = <<bigquery2>>

 clicks_all = pd.read_gbq(sql, private_key = private_key_loc)

 ctr = pd.merge(impressions_all, clicks_all, 
 how = 'left', 
 left_on = ['fullvisitorID','visitNumber','hits_hitnumber','visit_date','spid_seen' ], 
 right_on = ['fullvisitorID','visitNumber','hits_hitNumber','visit_date','SPID_clicked'])

C #

    GoogleCredential credential = GoogleCredential.FromFile("<<FILE>>");
var client = BigQueryClient.Create("<<ProjectId>>",credential);

string sql = $@"<BigQuery";

BigQueryResults impressions = client.ExecuteQuery(sql, 
                        null, new QueryOptions { UseLegacySql = true });

string sql = $@"<BigQuery2>>";


BigQueryResults clicks = client.ExecuteQuery(sql, 
                        null, new QueryOptions { UseLegacySql = true });


var ctr = from impression in impressions
    from click in clicks
    where impression["fullvisitorID"] == click["fullvisitorID"]
          && impression["visitNumber"] == click["visitNumber"]
          && impression["hits_hitnumber"] == click["hits_hitnumber"]
          && impression["visit_date"] == click["visit_date"]
          && impression["spid_seen"] == click["SPID_clicked"]
    select new {impression, click};

ctr = ctr.ToList();

Код висит на последней строке.

РЕДАКТИРОВАТЬ:

Я пытался материализовать как показы, так и клики, вызывая ToList () перед объединением.Кажется, не имеет значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...