ProHoster > Blog > warta internét > Kumaha utusan laporan basajan ka robot. Nulis bot dina Python jeung Google BigQuery
Kumaha utusan laporan basajan ka robot. Nulis bot dina Python jeung Google BigQuery
Naha anjeun ngagaduhan tugas anu diulang unggal dinten, minggu ka minggu? Contona, nulis laporan. Anjeun menta data, nganalisis éta, visualize eta (nyieun grafik, grafik), lajeng kirimkeun ka boss Anjeun. Tapi kumaha upami sadayana ieu otomatis?
Dina tutorial ieu kami bakal nyiptakeun bot pikeun Telegram anu bakal ngabantosan ngalaporkeun otomatis. Jeung hal coolest éta sakabéh program bakal diwangun ku ukur 50 garis kode! Upami anjeun mimiti nyiptakeun bot pikeun Telegram, maka anjeun ogé kedah maca ieu pasang.
Upami urang hoyong nganggo jasa éta, urang kedah nyambungkeun API Google BigQuery. Jang ngalampahkeun ieu urang buka Google pamekar konsol sareng jieun proyék énggal (atanapi pilih anu tos aya).
Dina panel kontrol, pilih AKTIFKAN API JEUNG LAYANAN sareng milarian BigQuery API.
Pilih Aktipkeun pikeun nyambungkeun API.
Jieun konci akun
Hayu urang balik deui Google pamekar konsol, pilih tab Kapercayaan, Jieun Kapercayaan sareng konci akun Service.
Teras - Akun jasa anyar, sareng lebetkeun nami dina widang Ngaran akun jasa.
Tina daptar turun-handap Peran, pilih Proyék > Pamilik, teras Jieun.
Berkas anu bakal diunduh sacara otomatis disebut creds.json.
Setel GOOGLE_APPLICATION_CREDENTIALS, nangtukeun jalur ka creds.json di terminal.
Pungsi ieu bakal balik pamundut salaku pigura data.
Visualizing data
Pikeun ngajawab masalah ieu, pilih matplotlib.
impor matplotlib.pyplot sakumaha plt
Urang peryogi lima parameter, dimana x nyaéta data sumbu-x, x_label nyaéta judul pikeun sumbu, y nyaéta data sumbu-y, y_label nyaéta judul pikeun sumbu, sareng judul nyaéta judul sakabéh visualisasi.
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
Simpen gambar
Ayeuna hayu urang nganggo dua fungsi pikeun nyiptakeun visualisasi sareng simpen.
Kami bakal ngirim jumlah tulisan anu diterbitkeun unggal dinten. Mimiti urang nyerat pamundut.
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
"""
Paménta ngabantosan ngumpulkeun data salami dua minggu mimitian 2 Désémber 2018.
Kami nganggo tanggal ieu kusabab 2018-12-02 mangrupikeun data pangénggalna anu kacatet dina bigquery-public-data.stackoverflow.post_history, dina kasus sanés anjeun tiasa nganggo CURRENT_DATE () pikeun kéngingkeun data énggal.
Nelepon fungsi query_to_bigquery pikeun meunangkeun data.
pigura data = query_to_bigquery(query)
Teras kami nganggo kolom data tanggal pikeun sumbu-x, sareng kolom total_posts pikeun sumbu-y.
x = pigura data[ 'tanggal'].tolist()
y = pigura data[ 'total_posts'].tolist()
Urang visualize eta ngagunakeun fungsi visualize_bar_chart tur simpen salaku hiji gambar.
Urang bungkus kode ieu dina fungsi disebut 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')
Kirim hiji gambar
Dina raraga ngirim laporan ka panarima, Anjeun kudu nyaho parameter chat_id.
Urang make pamakéinfobot jeung tipe / ngamimitian. Bot ngaréspon kalayan inpormasi anu diperyogikeun, chat_id dikandung dina widang id.
Ayeuna hayu urang nyieun fungsi send_image. Bakal nganggo fungsi get_and_save_image pikeun nyandak sareng nyimpen gambar. Teras we ngirimkeun sadayana ka kontak anu leres.
Tungtungna, urang nyieun fungsi sejen, utama, pikeun ngajalankeun aplikasi. Tong hilap gentos YOUR_TOKEN kanggo bot.
Inget: program ieu bakal ngirim gambar sacara otomatis dina waktos Anjeun tangtukeun. Contona, urang bakal ngirim laporan jam salapan isuk-isuk unggal poé.