ПроХостер > блог > интернет вести > Како делегирати једноставне извештаје роботу. Писање бота у Питхон-у и Гоогле БигКуери-ју
Како делегирати једноставне извештаје роботу. Писање бота у Питхон-у и Гоогле БигКуери-ју
Да ли имате задатке који се понављају из дана у дан, из недеље у недељу? На пример, писање извештаја. Захтевате податке, анализирате их, визуелизујете (направите графиконе, графиконе), а затим их шаљете свом шефу. Али шта ако је све ово аутоматизовано?
У овом туторијалу направићемо бота за Телеграм који ће помоћи у аутоматизацији извештавања. А најкул ствар је што ће се цео програм састојати од само 50 линија кода! Ако први пут правите бота за Телеграм, онда би требало да прочитате и овај брзо.
Ако желимо да користимо услугу, морамо да повежемо Гоогле БигКуери АПИ. Да бисмо то урадили идемо на Гоогле Девелоперс конзола и креирајте нови пројекат (или изаберите постојећи).
На контролној табли изаберите ОМОГУЋИ АПИ-ЈЕ И УСЛУГЕ и потражите БигКуери АПИ.
Изаберите Омогући да бисте повезали АПИ.
Креирајте кључ налога
Идемо поново на Гоогле Девелоперс конзола, изаберите картицу Акредитиви, Креирај акредитиве и Кључ налога услуге.
Затим - Нови налог услуге и унесите име у поље Назив налога услуге.
Са падајуће листе Улога изаберите Пројекат > Власник, а затим Креирај.
Датотека која ће се аутоматски преузети зове се цредс.јсон.
Поставите ГООГЛЕ_АППЛИЦАТИОН_ЦРЕДЕНТИАЛС, наводећи путању до цредс.јсон у терминалу.
Ова функција ће вратити захтев као оквир података.
Визуелизација података
Да бисте решили овај проблем, изаберите матплотлиб.
импорт матплотлиб.пиплот као плт
Потребно нам је пет параметара, где је к подаци на к-оси, к_лабел је наслов за осу, и је податак на и-оси, и_лабел је наслов за осу, а наслов је наслов целе визуелизације.
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
Сачувајте слику
Сада користимо две функције да креирамо визуелизацију и сачувамо је.
Послаћемо број постова објављених дневно. Прво пишемо захтев.
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
"""
Упит помаже у прикупљању података за две недеље почев од 2. децембра 2018.
Користимо овај датум јер су 2018-12-02 најновији подаци забележени у бигкуери-публиц-дата.стацковерфлов.пост_хистори, у другим случајевима можете користити ЦУРРЕНТ_ДАТЕ() да бисте добили најновије податке.
Позовите функцију куери_то_бигкуери да бисте добили податке.
оквир података = куери_то_бигкуери(упит)
Затим користимо колону података о датуму за к-осу и колону тотал_постс за и-осу.
к = оквир података['датум'].толист()
и = датафраме['тотал_постс'].толист()
Ми га визуализујемо помоћу функције висуализе_бар_цхарт и сачувамо га као слику.
Овај код умотавамо у функцију која се зове гет_анд_саве_имаге.
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')
Пошаљи слику
Да бисте послали извештај примаоцу, потребно је да знате параметар цхат_ид.
Користимо усеринфобот и откуцајте /старт. Бот одговара са потребним информацијама, цхат_ид се налази у пољу ид.
Сада направимо функцију сенд_имаге. Користиће функцију гет_анд_саве_имаге да преузме и сачува слику. А онда шаљемо све на прави контакт.