إرسال إحصائيات من DataFrame إلى BigQuery باستخدام إحصائيات Yandex.Direct كمثال

في هذه المقالة ، سأتحدث عن كيفية جلب الإحصائيات عبر السياق بأكمله في مكان واحد باستخدام BigQuery و Data Studio

كنت بحاجة لتصور البيانات على جميع مصادر المرور.

لهذه المهمة ، أستخدم Data Studio. يتم سحب إعلانات Google هناك بطريقة ممتازة ، ولكن مع Yandex Direct ، أصبح كل شيء أكثر تعقيدًا.

لقد اخترت طريقة نصف الإحصائيات لإحصائيات الإحصاء بنفسي: تلقي الإحصاءات وإرسالها من جهاز الكمبيوتر الخاص بي.

أحصل على احصائيات يوميًا في أقسام مختلفة في DataFrame.



وهذا شيء عظيم لأن الباندا لديها مكتبة pandas_gbq يمكنها إرسال DataFrames إلى BigQuery.

ما الإحصاءات لتخزينها في BigQuery


بادئ ذي بدء ، دعنا نقرر أي قسم من الإحصائيات سوف نرسله.
نظرًا لأنه يمكننا تخزين الكثير من المعلومات في BigQuery ، فقد أخرجت إحصاءات بنفسي من حيث الأيام.

نحتاج أيضًا إلى مراعاة حقيقة أننا نحتاج إلى الحصول على إحصائيات لمدة شهر على الأقل لإعادة كتابتها ، لأن أنظمة الإعلانات تقوم بتحديث الإحصاءات القديمة بسبب النقرة.

لذلك ، في الوقت الحالي ، لا أستخدم الإحصائيات من حيث المفاتيح بنفسي ، لأنها غالبًا ما تكون زائدة عن الحاجة.
سأقول كل شيء على سبيل المثال للإحصاءات اليومية في سياق جمهورية كازاخستان. (الأعمدة: التاريخ و PK)

بعد ذلك ، سنتحدث عن كيفية تعديل DataFrame بحيث يتم ذلك.

تعديل DataFrame



المشكلة 1


بالنسبة لبعض المنسقين المقيمين ، سنحصل على حقول فارغة في العوامل والتحويلات السلوكية



للتغلب على هذه المشكلة ، تحتاج إلى استبدال السلبيات "0".

f['Conversions'].replace(['--'],[0],inplace=True) f['CostPerConversion'].replace(['--'],[0],inplace=True) f['ConversionRate'].replace(['--'],[0],inplace=True) f['AvgPageviews'].replace(['--'],[0],inplace=True) f['BounceRate'].replace(['--'],[0],inplace=True) 

وتعيين نوع البيانات الرقمية.

 f[["Conversions","CostPerConversion","ConversionRate","AvgPageviews","BounceRate"]]=f[["Conversions","CostPerConversion","ConversionRate","AvgPageviews","BounceRate"]].apply(pd.to_numeric) 

المشكلة 2


إضافة عمود مفهرسة بشكل منفصل. إذا أرسلنا مثل DataFrame أو نظرنا إلى نوع البيانات باستخدام dtipe ، فإننا نرى أنه لا يوجد عمود يحتوي على تواريخ.

لإصلاح ذلك ، قم بإنشاء عمود يساوي العمود المفهرسة.

 f['Date']=f.index 


الحصول على DataFrame المقبل



إرسال DataFrame إلى BigQuery


 pandas_gbq.to_gbq(f,' .',project_id=' ',if_exists='replace') 

نشير إلى اسم DataFrame ، واسم مجموعة البيانات ، واسم الملف (قد لا يكون موجودًا بعد) ، واسم المشروع ، وكيف سيتم تسجيل الملف (في حالتنا ، سيتم الكتابة فوق الملف بالكامل).

نحصل على ما يلي في BigQuery:



يبقى فقط لتصور البيانات في DataStudio. كود النهاية:

 f['Date']=f.index f['Conversions'].replace(['--'],[0],inplace=True) f['CostPerConversion'].replace(['--'],[0],inplace=True) f['ConversionRate'].replace(['--'],[0],inplace=True) f['AvgPageviews'].replace(['--'],[0],inplace=True) f['BounceRate'].replace(['--'],[0],inplace=True) f[["Conversions", "CostPerConversion","ConversionRate","AvgPageviews","BounceRate"]] = f[["Conversions", "CostPerConversion","ConversionRate","AvgPageviews","BounceRate"]].apply(pd.to_numeric) pandas_gbq.to_gbq(f, 'YD_Days.my_client_rk', project_id='my_project',if_exists='replace') 

شكرا لاهتمامكم!

Source: https://habr.com/ru/post/ar454172/


All Articles