Выберите строки большого запроса с помощью pandas DataFrame - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть pandas DataFrame, как показано ниже:

###ADf
login_id | email
---------|---------------------
john     | john123@hotmail.com
peter    | peter456@gmail.com
johnny   | john123@hotmail.com

И озеро таблицы BigQuery ниже:

### ATable
date        | email
------------|---------------------
2019/01/02  | john123@hotmail.com
2019/01/04  | peter456@gmail.com
2019/01/05  | john123@hotmail.com
....
....

Я хочу выбрать строки в BigQuery таблица, равная каждому письму в DataFrame.

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

WITH YourTable AS (
  SELECT 1 AS id, 'What have you tried so far? Please edit your question to show a [Minimal, Complete, and Verifiable example](http://stackoverflow.com/help/mcve) of the code that you are having problems with, then we can try to help with the specific problem. You can also read [How to Ask](http://stackoverflow.com/help/how-to-ask).  ' AS Text UNION ALL
  SELECT 2 AS id, 'Important on SO, you can mark accepted answer by using the tick on the left of the posted answer, below the voting. see http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work#5235 for why it is important. There are more ... You can check about what to do when someone answers your question - http://stackoverflow.com/help/someone-answers.' AS Text UNION ALL
  SELECT 3 AS id, 'If an answer has helped you solve your problem and you accept it you should also consider voting it up. See more at http://stackoverflow.com/help/someone-answers and Upvote section in http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work#5235' AS Text 
)
SELECT 
 id, 
 REGEXP_EXTRACT_ALL(Text, r'(?i:(?:(?:(?:ftp|https?):\/\/)(?:www\.)?|www\.)(?:[\da-z-_\.]+)(?:[a-z\.]{2,7})(?:[\/\w\.-_\?\&]*)*\/?)') AS URL
FROM YourTable

Я думаю, что могу написать python скрипт для создания таблицы и внутреннего соединения:

email_list = ADf.email.to_list()
query1 = "WITH newTable AS ("
query2 = [f"SELECT '{email}'AS Email UNION ALL" for email in email_list[:-1]]
query3 = f"SELECT '{email_list[-1]}'AS Email UNION ALL;"
query4 = "SELECT * FROM newTable INNER JOIN ATABLE;"
query = " ".join([query1, query2, query3, query4])

Но я не знаком с SQL грамматикой. Как мне написать скрипт SQL?

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