ProHoster > Blog > vaovao amin'ny Internet > Ahoana ny fametrahana tatitra tsotra amin'ny robot. Manoratra bot amin'ny Python sy Google BigQuery izahay
Ahoana ny fametrahana tatitra tsotra amin'ny robot. Manoratra bot amin'ny Python sy Google BigQuery izahay
Manana asa miverimberina isan'andro ve ianao, isan-kerinandro? Ohatra, manoratra tatitra. Mangataka angon-drakitra ianao, manadihady azy, alaivo sary an-tsaina (manaova grafika, tabilao), ary alefaso any amin'ny lehibenao. Ahoana anefa raha mandeha ho azy izany rehetra izany?
Amin'ity lesona ity dia hamorona bot ho an'ny Telegram izahay izay hanampy amin'ny fanaovana automatique ny tatitra. Ary ny tena mahafinaritra dia ny programa manontolo dia tsy misy afa-tsy 50 andalana code! Raha sambany ianao no namorona bot ho an'ny Telegram, dia tokony hamaky ity iray ity koa ianao lahatsoratra.
Raha te hampiasa ny serivisy isika dia mila mampifandray ny Google BigQuery API. Mba hanaovana izany dia mandeha any Google Console Console ary mamorona tetikasa vaovao (na mifidiana efa misy).
Ao amin'ny tontonana fanaraha-maso, safidio ENBLE APIS AND SERVICES ary tadiavo ny BigQuery API.
Select Enable hampifandray ny API.
Mamorona fanalahidin'ny kaonty
Andao indray mandeha Google Console Console, safidio ny tabilao Credentials, Create credentials and Service account key.
Avy eo - Kaonty serivisy vaovao, ary ampidiro ao amin'ny saha Anaran'ny kaonty serivisy.
Avy amin'ny lisitry ny fidinan'ny Role, mifidiana Project > Owner, avy eo Create.
Ny rakitra izay alaina ho azy dia antsoina hoe creds.json.
Mametraha GOOGLE_APPLICATION_CREDENTIALS, mamaritra ny lalana mankany creds.json ao amin'ny terminal.
Raha nandeha tsara ny zava-drehetra, dia izao no fotoana hanombohana ny fanoratana ny fandaharana.
Mamorona fampiharana
Ho an'ny lesona dia hampiasa data avy amin'ny bigquery-public-data.stackoverflow izahay, ho an'ny tatitray dia hisafidy ny isan'ny famoahana isan'andro izahay.
Tsotra ny zava-drehetra.
Manontania ny latabatra -> Alaivo sary an-tsaina ny angon-drakitra -> Tehirizo ny sary -> Alefaso ny sary
Andao hamorona fiasa iray hamaritana ny kofehy tsirairay.
Ity fiasa ity dia hamerina ny fangatahana ho toy ny frame data.
Mampiseho angon-drakitra
Mba hamahana ity olana ity, mifidiana matplotlib.
import matplotlib.pyplot ho plt
Mila masontsivana dimy isika, izay ny x dia ny angona x-axis, ny x_label dia ny lohatenin'ny axe, ny y ny angona y-axis, ny y_label dia ny lohatenin'ny axe, ary ny lohateny dia ny lohatenin'ny sary manontolo.
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
Tehirizo ilay sary
Andeha isika hampiasa fiasa roa hamoronana sary sy hitahiry azy.
Handefa ny isan'ny lahatsoratra mivoaka isan'andro izahay. Voalohany dia manoratra fangatahana izahay.
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
"""
Manampy amin'ny fanangonana angona mandritra ny tapa-bolana manomboka ny 2 Desambra 2018 ny fanontaniana.
Ampiasainay io daty io satria 2018-12-02 no angona farany voarakitra ao amin'ny bigquery-public-data.stackoverflow.post_history, amin'ny tranga hafa azonao ampiasaina ny CURRENT_DATE() mba hahazoana ny angona vaovao indrindra.
Antsoy ny asa query_to_bigquery mba hahazoana ny angona.
dataframe = query_to_bigquery(query)
Avy eo dia mampiasa ny tsanganana data daty ho an'ny x-axis, ary ny total_posts ho an'ny y-axis.
x = dataframe['daty'].tolist()
y = dataframe['total_posts'].tolist()
Alaintsika sary an-tsaina izany amin'ny fampiasana ny fiasa visualize_bar_chart ary tehirizo ho sary.
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')
Mandefasa sary
Mba handefasana tatitra amin'ny mpandray dia mila mahafantatra ny mari-pamantarana chat_id ianao.
Ampiasainay userinfobot ary type/start. Ny bot dia mamaly miaraka amin'ny fampahalalana ilaina, chat_id dia voarakitra ao amin'ny saha id.
Andeha isika hamorona ny asa send_image. Hampiasa ny fiasa get_and_save_image izy io mba haka sy hamonjena ilay sary. Ary avy eo dia alefanay any amin'ny fifandraisana marina ny zava-drehetra.