ProHoster > Блог > labaran intanet > Yadda ake ba da rahotanni masu sauƙi ga mutum-mutumi. Muna rubuta bot a Python da Google BigQuery
Yadda ake ba da rahotanni masu sauƙi ga mutum-mutumi. Muna rubuta bot a Python da Google BigQuery
Kuna da ayyuka da suke maimaita kowace rana, mako bayan mako? Misali, rubuta rahotanni. Kuna buƙatar bayanai, bincika shi, duba shi (yi graphs, charts), sa'an nan kuma aika zuwa ga shugaban ku. Amma idan duk wannan an sarrafa ta atomatik fa?
A cikin wannan koyawa za mu ƙirƙiri bot don Telegram wanda zai taimaka yin rahoto ta atomatik. Kuma mafi kyawun abu shine cewa duk shirin zai ƙunshi layi na 50 kawai! Idan kuna ƙirƙirar bot don Telegram a karon farko, to yakamata ku karanta wannan post.
Idan muna son amfani da sabis ɗin, muna buƙatar haɗa Google BigQuery API. Don yin wannan za mu je zuwa Google Console Console kuma ƙirƙirar sabon aiki (ko zaɓi wanda yake).
A cikin rukunin sarrafawa, zaɓi ENABLE APIS DA SERVICES kuma nemi BigQuery API.
Zaɓi Kunna don haɗa API.
Ƙirƙiri maɓallin asusu
Mu sake zuwa Google Console Console, zaɓi shafin Shaida, Ƙirƙiri takaddun shaida da maɓallin asusun sabis.
Sannan - Sabon asusun sabis, kuma shigar da sunan a cikin filin sunan asusun sabis.
Daga jerin abubuwan da aka saukar na rawar aiki, zaɓi Project > Mai shi, sannan Ƙirƙiri.
Fayil ɗin da za a sauke ta atomatik ana kiransa creds.json.
Saita GOOGLE_APPLICATION_CREDENTIALS, yana fayyace hanyar creds.json a cikin tasha.
Wannan aikin zai dawo da buƙatun azaman firam ɗin bayanai.
Bayanan gani
Don magance wannan matsalar, zaɓi matplotlib.
shigo da matplotlib.pyplot azaman plt
Muna buƙatar sigogi guda biyar, inda x shine bayanan x-axis, x_label shine take ga axis, y shine bayanan y-axis, y_label shine take ga axis, take kuma shine taken duka gani.
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
Ajiye hoton
Yanzu bari mu yi amfani da ayyuka guda biyu don ƙirƙirar gani da adana shi.
Za mu aika da adadin posts da aka buga kullum. Da farko mun rubuta bukata.
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
"""
Tambayar ta taimaka wajen tattara bayanai na makonni biyu daga Disamba 2, 2018.
Muna amfani da wannan kwanan wata saboda 2018-12-02 shine sabon bayanan da aka yi rikodin a bigquery-public-data.stackoverflow.post_history, a wasu lokuta kuna iya amfani da CURRENT_DATE() don samun sabbin bayanai.
Kira aikin query_to_bigquery don samun bayanan.
dataframe = tambaya_to_bigquery(tambaya)
Sannan muna amfani da ginshiƙin bayanan kwanan wata don x-axis, da jimlar jimlar posts na y-axis.
x = dataframe['kwanan wata'].tolist()
y = tsarin bayanai ['total_posts'].tolist()
Muna hango shi ta amfani da aikin visualize_bar_chart kuma muna adana shi azaman hoto.
Mun nade wannan lambar a cikin aikin da ake kira 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')
Aika hoto
Domin aika rahoto ga mai karɓa, kuna buƙatar sanin sigar chat_id.
Muna amfani mai amfani kuma rubuta / farawa. Bot ɗin yana amsawa tare da mahimman bayanan, chat_id yana ƙunshe a cikin filin id.
Yanzu bari mu ƙirƙiri aikin send_image. Zai yi amfani da aikin get_and_save_image don dawo da adana hoton. Sannan mu aika komai zuwa madaidaicin lamba.