ProHoster > Blag > nuacht idirlín > Conas tuairiscí simplí a tharmligean chuig róbat. Scríobhaimid bot i Python agus Google BigQuery
Conas tuairiscí simplí a tharmligean chuig róbat. Scríobhaimid bot i Python agus Google BigQuery
An bhfuil tascanna agat a athdhéantar lá i ndiaidh lae, seachtain i ndiaidh seachtaine? Mar shampla, tuairiscí a scríobh. Iarrann tú sonraí, déanann tú anailís orthu, déan iad a shamhlú (déan graif, cairteacha), agus ansin seolann tú chuig do bhainisteoir iad. Ach cad a tharlaíonn má bhí sé seo go léir uathoibrithe?
Sa rang teagaisc seo cruthóimid bot do Telegram a chabhróidh le tuairisciú a uathoibriú. Agus is é an rud is fuaire ná nach mbeidh sa chlár iomlán ach 50 líne de chód! Má tá bot á chruthú agat do Telegram den chéad uair, ba cheart duit an ceann seo a léamh freisin post.
Meabhraímid:do léitheoirí uile "Habr" - lascaine de 10 rúbal nuair a chláraíonn siad in aon chúrsa Scilbox ag baint úsáide as an gcód bolscaireachta "Habr".
Más mian linn an tseirbhís a úsáid, ní mór dúinn an API Google BigQuery a nascadh. Chun seo a dhéanamh téann muid go dtí Google Forbróirí Console agus cruthaigh tionscadal nua (nó roghnaigh ceann atá ann cheana).
Sa phainéal rialaithe, roghnaigh ENABLE APIS AND SERVICES agus breathnaigh ar BigQuery API.
Roghnaigh Cumasaigh chun an API a nascadh.
Cruthaigh eochair chuntais
A ligean ar dul go dtí arís Google Forbróirí Console, roghnaigh an táb Dintiúir, Cruthaigh dintiúir agus eochair chuntais Seirbhíse.
Ansin - Cuntas seirbhíse nua, agus cuir isteach an t-ainm sa réimse ainm cuntas Seirbhíse.
Ón liosta anuas Ról, roghnaigh Tionscadal > Úinéir, ansin Cruthaigh.
Tugtar creds.json ar an gcomhad a íoslódálfar go huathoibríoch.
Socraigh GOOGLE_APPLICATION_CREDENTIALS, ag sonrú an chonair go creds.json sa teirminéal.
Tabharfaidh an fheidhm seo an t-iarratas ar ais mar fhráma sonraí.
Amharcléiriú sonraí
Chun an fhadhb seo a réiteach, roghnaigh matplotlib.
allmhairiú matplotlib.pyplot mar plt
Ní mór dúinn cúig pharaiméadair, áit a bhfuil x na sonraí x-ais, is é x_label an teideal don ais, is é y na sonraí y-ais, is é y_label an teideal don ais, agus is é an teideal teideal an léirshamhlaithe ar fad.
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
Sábháil an íomhá
Anois bainimis úsáid as dhá fheidhm chun léirshamhlú a chruthú agus é a shábháil.
Seolfaimid líon na bpost a fhoilsítear go laethúil. Ar dtús scríobhaimid iarratas.
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
"""
Cuidíonn an fiosrúchán le sonraí a bhailiú le haghaidh coicíse ón 2 Nollaig 2018.
Bainimid úsáid as an dáta seo toisc gurb é 2018-12-02 na sonraí is déanaí a taifeadadh i bigquery-public-data.stackoverflow.post_history, i gcásanna eile is féidir leat CURRENT_DATE() a úsáid chun na sonraí is nuaí a fháil.
Glaoigh ar an bhfeidhm query_to_bigquery chun na sonraí a fháil.
dataframe = query_to_bigquery(iarratas)
Ansin úsáidimid an colún sonraí dáta don x-ais, agus an colún total_posts don y-ais.
x = fráma sonraí['dáta'].tolist()
y = dataframe['total_posts'].tolist()
Déanaimid é a shamhlú ag baint úsáide as an bhfeidhm visualize_bar_chart agus é a shábháil mar íomhá.
Fillteaimid an cód seo in fheidhm ar a dtugtar 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')
Seol íomhá
Chun tuairisc a sheoladh chuig an bhfaighteoir, ní mór duit an paraiméadar chat_id a bheith ar eolas agat.
úsáidimid faisnéis úsáideora agus clóscríobh / tús. Freagraíonn an bot leis an bhfaisnéis riachtanach, tá chat_id sa réimse ID.
Anois cruthaimis an fheidhm send_image. Úsáidfidh sé an fheidhm get_and_save_image chun an íomhá a aisghabháil agus a shábháil. Agus ansin cuirimid gach rud chuig an teagmháil cheart.