ProHoster > Blogi > netin uutisia > Kuinka delegoida yksinkertaiset raportit robotille. Kirjoitamme botin Pythonissa ja Google BigQueryssä
Kuinka delegoida yksinkertaiset raportit robotille. Kirjoitamme botin Pythonissa ja Google BigQueryssä
Onko sinulla tehtäviä, jotka toistuvat päivästä toiseen, viikosta toiseen? Esimerkiksi raporttien kirjoittaminen. Pyydät tietoja, analysoit niitä, visualisoit ne (teet kaavioita, kaavioita) ja lähetät sen sitten pomollesi. Mutta entä jos tämä kaikki olisi automatisoitua?
Tässä opetusohjelmassa luomme Telegramille botin, joka auttaa automatisoimaan raportoinnin. Ja hienointa on, että koko ohjelma koostuu vain 50 rivistä koodia! Jos luot botin Telegramille ensimmäistä kertaa, sinun tulee myös lukea tämä posti.
Jos haluamme käyttää palvelua, meidän on yhdistettävä Google BigQuery API. Tätä varten menemme Google Developers Console ja luo uusi projekti (tai valitse olemassa oleva).
Valitse ohjauspaneelista OTA APIS JA PALVELUT KÄYTTÖÖN ja etsi BigQuery API.
Valitse Ota käyttöön yhdistääksesi API.
Luo tiliavain
Mennään taas Google Developers Console, valitse Tunnistetiedot-välilehti, Luo tunnistetiedot ja palvelutiliavain.
Sitten - Uusi palvelutili ja kirjoita nimi Palvelutilin nimi -kenttään.
Valitse avattavasta Rooli-luettelosta Projekti > Omistaja ja sitten Luo.
Automaattisesti ladattava tiedosto on nimeltään creds.json.
Aseta GOOGLE_APPLICATION_CREDENTIALS ja määritä polku creds.json-tiedostoon päätteessä.
vie GOOGLE_APPLICATION_CREDENTIALS='[PATH_TO_CREDS.JSON]'
Jos kaikki meni hyvin, on aika aloittaa ohjelman kirjoittaminen.
Tarvitsemme viisi parametria, joissa x on x-akselin data, x_label on akselin otsikko, y on y-akselin data, y_label on akselin otsikko ja otsikko on koko visualisoinnin otsikko.
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
Tallenna kuva
Käytetään nyt kahta funktiota visualisoinnin luomiseen ja tallentamiseen.
Lähetämme päivittäin julkaistujen viestien määrän. Ensin kirjoitamme pyynnön.
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
"""
Kysely auttaa keräämään tietoja kahden viikon ajalta 2 alkaen.
Käytämme tätä päivämäärää, koska 2018-12-02 on viimeisin data, joka on tallennettu tiedostoon bigquery-public-data.stackoverflow.post_history. Muissa tapauksissa voit käyttää CURRENT_DATE() saadaksesi uusimmat tiedot.
Käärimme tämän koodin funktioon nimeltä 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')
Lähetä kuva
Jotta voit lähettää raportin vastaanottajalle, sinun on tiedettävä chat_id-parametri.
käyttö käyttäjätietobot ja kirjoita /start. Botti vastaa tarvittavilla tiedoilla, chat_id sisältyy id-kenttään.
Luodaan nyt send_image-funktio. Se käyttää get_and_save_image-funktiota kuvan hakemiseen ja tallentamiseen. Ja sitten lähetämme kaiken oikealle yhteyshenkilölle.