புரோஹோஸ்டர் > Блог > இணைய செய்தி > ஒரு ரோபோவுக்கு எளிய அறிக்கைகளை எவ்வாறு வழங்குவது. Python மற்றும் Google BigQuery இல் ஒரு போட் எழுதுதல்
ஒரு ரோபோவுக்கு எளிய அறிக்கைகளை எவ்வாறு வழங்குவது. Python மற்றும் Google BigQuery இல் ஒரு போட் எழுதுதல்
நாளுக்கு நாள், வாரத்திற்கு வாரம் மீண்டும் செய்யும் பணிகள் உங்களிடம் உள்ளதா? உதாரணமாக, அறிக்கைகளை எழுதுதல். நீங்கள் தரவைக் கோருகிறீர்கள், அதை பகுப்பாய்வு செய்யுங்கள், காட்சிப்படுத்துங்கள் (வரைபடங்கள், விளக்கப்படங்களை உருவாக்கவும்), பின்னர் அதை உங்கள் முதலாளிக்கு அனுப்பவும். ஆனால் இவை அனைத்தும் தானியங்கியாக இருந்தால் என்ன செய்வது?
இந்த டுடோரியலில், அறிக்கையிடலை தானியக்கமாக்க உதவும் டெலிகிராமிற்கு ஒரு போட்டை உருவாக்குவோம். சிறந்த விஷயம் என்னவென்றால், முழு நிரலும் 50 வரிகளை மட்டுமே கொண்டிருக்கும்! நீங்கள் முதல் முறையாக டெலிகிராமிற்கு ஒரு போட்டை உருவாக்குகிறீர்கள் என்றால், இதையும் படிக்க வேண்டும் பதவியை.
நாங்கள் நினைவூட்டுகிறோம்:"Habr" இன் அனைத்து வாசகர்களுக்கும் - "Habr" விளம்பரக் குறியீட்டைப் பயன்படுத்தி எந்த Skillbox படிப்பிலும் சேரும்போது 10 ரூபிள் தள்ளுபடி.
pip3 google-Cloud-bigquery matplotlib numpy pandas python-telegram-bot ஐ நிறுவவும்
Google BigQuery API ஐ இணைக்கிறது
நாங்கள் சேவையைப் பயன்படுத்த விரும்பினால், Google BigQuery API ஐ இணைக்க வேண்டும். இதைச் செய்ய, நாங்கள் செல்கிறோம் Google டெவெலப்பர்ஸ் கன்சோல் புதிய திட்டத்தை உருவாக்கவும் (அல்லது ஏற்கனவே உள்ள ஒன்றைத் தேர்ந்தெடுக்கவும்).
கட்டுப்பாட்டுப் பலகத்தில், ANABLE APIS மற்றும் SERVICES என்பதைத் தேர்ந்தெடுத்து, BigQuery APIயைத் தேடவும்.
API ஐ இணைக்க இயக்கு என்பதைத் தேர்ந்தெடுக்கவும்.
கணக்கு விசையை உருவாக்கவும்
மீண்டும் செல்வோம் Google டெவெலப்பர்ஸ் கன்சோல், நற்சான்றிதழ்கள் தாவலைத் தேர்ந்தெடுக்கவும், நற்சான்றிதழ்களை உருவாக்கவும் மற்றும் சேவை கணக்கு விசையை உருவாக்கவும்.
பின்னர் - புதிய சேவை கணக்கு, மற்றும் சேவை கணக்கு பெயர் புலத்தில் பெயரை உள்ளிடவும்.
பங்கு கீழ்தோன்றும் பட்டியலில் இருந்து, திட்டம் > உரிமையாளர் என்பதைத் தேர்ந்தெடுத்து, பின்னர் உருவாக்கவும்.
தானாக பதிவிறக்கம் செய்யப்படும் கோப்பு creds.json என்று அழைக்கப்படுகிறது.
ஏற்றுமதி GOOGLE_APPLICATION_CREDENTIALS='[PATH_TO_CREDS.JSON]'
எல்லாம் சரியாக நடந்தால், நிரலை எழுதத் தொடங்க வேண்டிய நேரம் இது.
ஒரு பயன்பாட்டை உருவாக்குதல்
டுடோரியலுக்கு, bigquery-public-data.stackoverflow இலிருந்து தரவைப் பயன்படுத்துவோம், எங்கள் அறிக்கைக்காக தினசரி வெளியீடுகளின் எண்ணிக்கையைத் தேர்ந்தெடுப்போம்.
இந்த சிக்கலை தீர்க்க, matplotlib ஐ தேர்வு செய்யவும்.
matplotlib.pyplot ஐ plt ஆக இறக்குமதி செய்யவும்
நமக்கு ஐந்து அளவுருக்கள் தேவை, இங்கு x என்பது x-அச்சு தரவு, x_label என்பது அச்சின் தலைப்பு, y என்பது y-அச்சு தரவு, y_label என்பது அச்சின் தலைப்பு மற்றும் தலைப்பு என்பது முழு காட்சிப்படுத்தலின் தலைப்பாகும்.
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 என்பது bigquery-public-data.stackoverflow.post_history இல் பதிவுசெய்யப்பட்ட சமீபத்திய தரவு என்பதால் இந்தத் தேதியைப் பயன்படுத்துகிறோம், மற்ற சமயங்களில் புதிய தரவைப் பெற CURRENT_DATE()ஐப் பயன்படுத்தலாம்.
தரவைப் பெற query_to_bigquery செயல்பாட்டை அழைக்கவும்.
dataframe = query_to_bigquery(query)
பின்னர் x-அச்சுக்கான தேதி தரவு நெடுவரிசையையும், y-அச்சுக்கான total_posts நெடுவரிசையையும் பயன்படுத்துகிறோம்.
x = dataframe['date'].tolist()
y = டேட்டாஃப்ரேம்['total_posts'].tolist()
Visualize_bar_chart செயல்பாட்டைப் பயன்படுத்தி அதை காட்சிப்படுத்துகிறோம் மற்றும் அதை ஒரு படமாக சேமிக்கிறோம்.
இந்த குறியீட்டை 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')
படத்தை அனுப்பவும்
பெறுநருக்கு அறிக்கையை அனுப்ப, நீங்கள் chat_id அளவுருவை அறிந்து கொள்ள வேண்டும்.
பயன்படுத்த userinfobot மற்றும் தட்டச்சு / தொடக்கம். போட் தேவையான தகவலுடன் பதிலளிக்கிறது, chat_id ஐடி புலத்தில் உள்ளது.
இப்போது send_image செயல்பாட்டை உருவாக்குவோம். படத்தை மீட்டெடுக்கவும் சேமிக்கவும் get_and_save_image செயல்பாட்டைப் பயன்படுத்தும். பின்னர் எல்லாவற்றையும் சரியான தொடர்புக்கு அனுப்புகிறோம்.