ProHoster > Blog > lajme në internet > Si t'i delegoni raporte të thjeshta një roboti. Shkrimi i një roboti në Python dhe Google BigQuery
Si t'i delegoni raporte të thjeshta një roboti. Shkrimi i një roboti në Python dhe Google BigQuery
A keni detyra që përsëriten ditë pas dite, javë pas jave? Për shembull, shkrimi i raporteve. Ju kërkoni të dhëna, analizoni ato, vizualizoni ato (bëni grafikët, grafikët) dhe më pas ia dërgoni shefit tuaj. Por, çka nëse e gjithë kjo do të ishte e automatizuar?
Në këtë tutorial ne do të krijojmë një bot për Telegram që do të ndihmojë në automatizimin e raportimit. Dhe gjëja më interesante është se i gjithë programi do të përbëhet nga vetëm 50 rreshta kodi! Nëse po krijoni një bot për Telegram për herë të parë, atëherë duhet ta lexoni edhe këtë post.
Nëse duam të përdorim shërbimin, duhet të lidhim Google BigQuery API. Për ta bërë këtë shkojmë në Google Developers Console dhe krijoni një projekt të ri (ose zgjidhni një ekzistues).
Në panelin e kontrollit, zgjidhni ENABLE APIS AND SERVICES dhe kërkoni për BigQuery API.
Zgjidhni Aktivizo për të lidhur API-në.
Krijo një çelës llogarie
Le të shkojmë përsëri në Google Developers Console, zgjidhni skedën Kredencialet, Krijo kredencialet dhe çelësin e llogarisë së shërbimit.
Pastaj - Llogaria e re e shërbimit dhe futni emrin në fushën Emri i llogarisë së shërbimit.
Nga lista rënëse Role, zgjidhni Projekt > Pronari, më pas Krijo.
Skedari që do të shkarkohet automatikisht quhet creds.json.
Cakto GOOGLE_APPLICATION_CREDENTIALS, duke specifikuar shtegun drejt creds.json në terminal.
Ky funksion do ta kthejë kërkesën si një kornizë të dhënash.
Vizualizimi i të dhënave
Për të zgjidhur këtë problem, zgjidhni matplotlib.
import matplotlib.pyplot si plt
Ne kemi nevojë për pesë parametra, ku x është të dhënat e boshtit x, x_label është titulli i boshtit, y është i dhënat e boshtit y, y_label është titulli për boshtin dhe titulli është titulli i të gjithë vizualizimit.
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
Ruani imazhin
Tani le të përdorim dy funksione për të krijuar një vizualizim dhe për ta ruajtur atë.
Ne do të dërgojmë numrin e postimeve të publikuara çdo ditë. Së pari ne shkruajmë një kërkesë.
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
"""
Kërkesa ndihmon në mbledhjen e të dhënave për dy javë duke filluar nga 2 dhjetori 2018.
Ne e përdorim këtë datë sepse 2018-12-02 janë të dhënat më të fundit të regjistruara në bigquery-public-data.stackoverflow.post_history, në raste të tjera mund të përdorni CURRENT_DATE() për të marrë të dhënat më të reja.
Thirrni funksionin query_to_bigquery për të marrë të dhënat.
korniza e të dhënave = query_to_bigquery (pyetje)
Pastaj përdorim kolonën e të dhënave të datës për boshtin x dhe kolonën total_posts për boshtin y.
x = korniza e të dhënave['data'].tolist()
y = korniza e të dhënave['total_posts'].tolist()
Ne e vizualizojmë atë duke përdorur funksionin visualize_bar_chart dhe e ruajmë atë si imazh.
Ne e mbështjellim këtë kod në një funksion të quajtur 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')
Dërgo një imazh
Për të dërguar një raport te marrësi, duhet të dini parametrin chat_id.
Ne përdorim userinfobot dhe shkruani /start. Bot përgjigjet me informacionin e nevojshëm, chat_id gjendet në fushën id.
Tani le të krijojmë funksionin send_image. Do të përdorë funksionin get_and_save_image për të marrë dhe ruajtur imazhin. Dhe pastaj ne dërgojmë gjithçka në kontaktin e duhur.
Së fundi, ne krijojmë një funksion tjetër, kryesor, për të nisur aplikacionin. Mos harroni të ndryshoni YOUR_TOKEN për robotin.
Mbani mend: ky program do të dërgojë imazhin automatikisht në kohën që ju specifikoni. Për shembull, ne do të dërgojmë një raport në nëntë të mëngjesit çdo ditë.