ProHoster > Pūnaewele > nūhou pūnaewele > Pehea e hāʻawi ai i nā hōʻike maʻalahi i kahi robot. Ke kākau ʻana i kahi bot ma Python a me Google BigQuery
Pehea e hāʻawi ai i nā hōʻike maʻalahi i kahi robot. Ke kākau ʻana i kahi bot ma Python a me Google BigQuery
Loaʻa iā ʻoe nā hana e hana hou i kēlā me kēia lā, kēlā me kēia pule? Eia kekahi laʻana, kākau moʻolelo. Noi ʻoe i ka ʻikepili, kānana, nānā iā ia (e hana i nā kiʻi, nā pakuhi), a laila e hoʻouna i kou haku. Akā, pehea inā ua hoʻohana ʻia kēia mau mea a pau?
Ma kēia kumu aʻo e hana mākou i kahi bot no Telegram e kōkua i ka hoʻokaʻawale ʻana i ka hōʻike. A ʻo ka mea ʻoluʻolu loa, ʻo ka papahana holoʻokoʻa he 50 mau laina code wale nō! Inā ʻoe e hana ana i kahi bot no Telegram no ka manawa mua, a laila pono ʻoe e heluhelu i kēia leka.
Hoʻomaopopo mākou iā ʻoe:no ka poʻe heluhelu a pau o "Habr" - kahi ho'ēmi o 10 rubles i ka wā e kākau inoa ai i kekahi papa Skillbox e hoʻohana ana i ka code promotional "Habr".
pip3 hoʻokomo i ka google-cloud-bigquery matplotlib numpy pandas python-telegram-bot
Hoʻohui ʻia ʻo Google BigQuery API
Inā makemake mākou e hoʻohana i ka lawelawe, pono mākou e hoʻopili i ka Google BigQuery API. No ka hana ʻana i kēia, hele mākou i Kākoʻo Paena Google a hana i kahi papahana hou (a i ʻole e koho i kahi mea i loaʻa).
Ma ka papa hoʻomalu, koho ENABLE APIS AND SERVICES a huli i BigQuery API.
E koho iā Enable to connect the API.
E hana i kahi kī moʻokāki
E hele hou kāua Kākoʻo Paena Google, koho i ka Credentials tab, Create credentials and Service account key.
A laila - New lawelawe mooolelo, a komo i ka inoa ma ka Service mooolelo inoa kahua.
Mai ka papa hāʻule iho i lalo Role, koho i Project > Owner, a laila Hana.
Ua kapa ʻia ka faila e hoʻoiho ʻia ʻo creds.json.
E hoʻonoho iā GOOGLE_APPLICATION_CREDENTIALS, e kuhikuhi ana i ke ala i creds.json ma ka pahu.
hoʻokuʻu aku iā GOOGLE_APPLICATION_CREDENTIALS='[PATH_TO_CREDS.JSON]'
Inā maikaʻi nā mea a pau, ʻo ia ka manawa e hoʻomaka ai e kākau i ka papahana.
Ke hana ʻana i kahi noi
No ke kumu aʻo e hoʻohana mākou i ka ʻikepili mai bigquery-public-data.stackoverflow, no kā mākou hōʻike e koho mākou i ka helu o nā paʻi i kēlā me kēia lā.
Maʻaneʻi ka maʻalahi.
E nīnau i ka papaʻaina -> E nānā i ka ʻikepili -> E mālama i ka nānā ʻana -> E hoʻouna i ke kiʻi
E hana mākou i hoʻokahi hana e wehewehe i kēlā me kēia pae.
Nīnau iā BigQuery
Hoʻokomo mua mākou i ka waihona.
mai google.cloud hoʻokomo i ka bigquery
Hoʻokumu mākou i kahi hana i kapa ʻia query_to_bigquery, kahi i nīnau ʻia ai ka parameter.
Na kēia hana e hoʻihoʻi i ka noi ma ke ʻano he kiʻi ʻikepili.
Ke nānā nei i ka ʻikepili
No ka hoʻoponopono i kēia pilikia, koho matplotlib.
lawe mai i ka matplotlib.pyplot as plt
Pono mākou i ʻelima mau ʻāpana, kahi ʻo x ka ʻikepili axis x, ʻo x_label ke poʻo inoa no ke axis, ʻo y ka ʻikepili axis-y, ʻo y_label ke poʻo inoa no ke axis, a ʻo ke poʻo inoa ke poʻo o ka hiʻohiʻona holoʻokoʻa.
def visualize_bar_chart(x, x_label, y, y_label, title):
plt.title(title)
plt.xlabel(x_label)
plt.ylabel(y_label)
index = np.arange(len(x))
plt.xticks(index, x, fontsize=5, rotation=30)
plt.bar(index, y)
return plt
E mālama i ke kiʻi
I kēia manawa, e hoʻohana kāua i ʻelua hana e hana i kahi hiʻohiʻona a mālama iā ia.
E hoʻouna mākou i ka helu o nā pou i paʻi ʻia i kēlā me kēia lā. E kākau mua mākou i kahi noi.
query = """
SELECT DATE(creation_date) date, COUNT(*) total_posts
FROM `bigquery-public-data.stackoverflow.post_history`
GROUP BY 1
HAVING date > DATE_SUB('2018-12-02', INTERVAL 14 DAY)
ORDER BY 1
"""
Kōkua ka hulina e hōʻiliʻili i ka ʻikepili no ʻelua pule e hoʻomaka ana i ka lā 2 Dekemaba 2018.
Hoʻohana mākou i kēia lā no ka mea ʻo 2018-12-02 ka ʻikepili hou loa i hoʻopaʻa ʻia ma bigquery-public-data.stackoverflow.post_history, ma nā hihia ʻē aʻe hiki iā ʻoe ke hoʻohana iā CURRENT_DATE() e kiʻi i ka ʻikepili hou.
Kāhea i ka hana query_to_bigquery no ka loaʻa ʻana o ka ʻikepili.
ʻikepili = query_to_bigquery(query)
A laila, hoʻohana mākou i ke kolamu ʻikepili lā no ka axis x, a me ke kolamu total_posts no ka axis y.
x = pūʻulu ʻikepili['lā'].tolist()
y = ka ʻikepili['total_posts'].tolist()
Nānā mākou iā ia me ka hoʻohana ʻana i ka hana visualize_bar_chart a mālama iā ia ma ke ʻano he kiʻi.
Hoʻopili mākou i kēia code i kahi hana i kapa ʻia get_and_save_image.
def get_and_save_image():
query = """
SELECT DATE(creation_date) date, COUNT(*) total_posts
FROM `bigquery-public-data.stackoverflow.post_history`
GROUP BY 1
HAVING date > DATE_SUB('2018-12-02', INTERVAL 14 DAY)
ORDER BY 1
"""
dataframe = query_to_bigquery(query)
x = dataframe['date'].tolist()
y = dataframe['total_posts'].tolist()
plt = visualize_bar_chart(x=x, x_label='Date', y=y, y_label='Total Posts', title='Daily Posts')
plt.savefig('viz.png')
Hoʻouna i kahi kiʻi
No ka hoʻouna ʻana i kahi hōʻike i ka mea i loaʻa, pono ʻoe e ʻike i ka ʻāpana chat_id.
Hoʻohana mākou userinfobot a ʻano / hoʻomaka. Pane ka bot me ka ʻike e pono ai, aia ka chat_id i loko o ke kahua id.
E hana kākou i ka hana send_image. E hoʻohana ia i ka hana get_and_save_image e kiʻi a mālama i ke kiʻi. A laila hoʻouna mākou i nā mea a pau i ka pilina kūpono.
ʻO ka hope, hana mākou i kahi hana ʻē aʻe, nui, e hoʻomaka i ka noi. Mai poina e hoʻololi i YOUR_TOKEN no ka bot.
E hoʻomanaʻo: e hoʻouna maʻalahi kēia polokalamu i ke kiʻi i ka manawa āu e kuhikuhi ai. No ka laʻana, e hoʻouna mākou i kahi hōʻike i ka ʻeiwa o ke kakahiaka i kēlā me kēia lā.