تصور بيانات مدهش باستخدام Power BI Python

لديكم إدارة تود معرفة كل شيء عن الشركة من حيث التمويل والإنتاجية ولكن لا ترغب في إنفاق أي مبلغ على أدوات إدارة تقنية المعلومات عالية المستوى؟ لا تقوموا باللجوء إلى أدوات مختلفة لأنظمة المخزون والفواتير ونظم التذاكر. ما تحتاجونه فقط هو نظام مركزي واحد. لماذا لا تفكرون في باور بي آي بيثون؟

يمكن لـ باور بي آي تحويل المهام المملة والمستهلكة للوقت إلى عملية آلية. وفي هذا البرنامج التعليمي، ستتعلم كيفية تقطيع ودمج بياناتك بطرق لم تكن تتخيلها.

هيا، وانقذ نفسك من التوتر الذي ينجم عن تصفح التقارير المعقدة!

المتطلبات المسبقة

سيكون هذا البرنامج التعليمي عرضًا تطبيقيًا عمليًا. إذا كنت ترغب في متابعته، تأكد من أن لديك ما يلي:

  • A Windows Server – This tutorial uses a Windows Server 2022.
  • باور بي آي ديسكتوب مثبت على خادم Windows الخاص بك – يستخدم هذا البرنامج التعليمي باور بي آي ديسكتوب v2.105.664.0.
  • خادم MySQL مثبت – يستخدم هذا البرنامج التعليمي خادم MySQL v8.0.29.
  • Python v3.6 أو أحدث مثبت – يستخدم هذا البرنامج التعليمي Python v3.10.5.
  • DBeaver مثبت – يستخدم هذا البرنامج التعليمي DBeaver v22.0.2.

بناء قاعدة بيانات MySQL

يمكن لـ Power BI تصور البيانات بشكل جميل، ولكن عليك استرجاعها وتخزينها قبل الوصول إلى تصور البيانات. أحد أفضل الطرق لتخزين البيانات هو في قاعدة بيانات. MySQL هو أداة قاعدة بيانات مجانية وقوية.

1. افتح موجه الأوامر كمسؤول، قم بتشغيل الأمر mysql أدناه وأدخل اسم المستخدم الرئيسي (-u) وكلمة المرور (-p) عندما يُطلب.

بشكل افتراضي، يمتلك مستخدم الجذر فقط الإذن لإجراء تغييرات على قاعدة البيانات.

mysql -u root -p
Logging into MySQL as the root

2. بعد ذلك، قم بتشغيل الاستعلام أدناه لإنشاء مستخدم قاعدة بيانات جديد (CREATE USER) بكلمة مرور (IDENTIFIED BY). يمكنك تسمية المستخدم بشكل مختلف، ولكن اختيار هذا البرنامج التعليمي هو ata_levi.

CREATE USER 'ata_levi'@'localhost' IDENTIFIED BY 'Password';
Creating a new database user

3. بعد إنشاء مستخدم، قم بتشغيل الاستعلام أدناه لمنح أذونات المستخدم الجديد (ALL PRIVILEGES)، مثل إنشاء قاعدة بيانات على الخادم.

GRANT ALL PRIVILEGES ON . TO 'ata_levi'@'localhost' WITH GRANT OPTION;
Granting privileges to the newly-created user

4. الآن، قم بتشغيل الأمر \q أدناه لتسجيل الخروج من MySQL.

Logging out from MySQL as root

5. قم بتشغيل الأمر mysql أدناه لتسجيل الدخول كمستخدم قاعدة بيانات تم إنشاؤه حديثًا (ata_levi).

mysql -u ata_levi -p
Logging in to MySQL as ata_levi

6. أخيرًا، قم بتشغيل الاستعلام التالي لإنشاء قاعدة بيانات جديدة تسمى ata_database. ولكن بالطبع، يمكنك تسمية قاعدة البيانات بشكل مختلف.

CREATE DATABASE ata_database;
Creating a new database (ata_database)

إدارة قواعد بيانات MySQL باستخدام DBeaver

عند إدارة قواعد البيانات، عادةً ما تحتاج إلى معرفة SQL. ولكن مع DBeaver، لديك واجهة رسومية لإدارة قواعد البيانات الخاصة بك ببضع نقرات، وسيقوم DBeaver بالعناية بالبيانات SQL بالنيابة عنك.

1. افتح DBeaver من سطح المكتب الخاص بك أو من قائمة “ابدأ”.

2. عند فتح DBeaver، انقر فوق القائمة المنسدلة “اتصال قاعدة بيانات جديد” وحدد MySQL لبدء الاتصال بخادم MySQL الخاص بك.

Accessing MySQL via DBeaver

3. قم بتسجيل الدخول إلى خادم MySQL المحلي الخاص بك باستخدام البيانات التالية:

  • احتفظ بـ اسم المضيف كـ localhost و المنفذ عند 3306 لأنك تقوم بالاتصال بخادم محلي.
  • قم بتوفير بيانات اعتماد مستخدم ata_levi (اسم المستخدم وكلمة المرور) من الخطوة الثانية في قسم “بناء قاعدة بيانات MySQL”، وانقر على “إنهاء” لتسجيل الدخول إلى MySQL.
Logging in to MySQL

4. الآن، قم بتوسيع قاعدة البيانات (ata_database) تحت المستكشف قاعدة البيانات (لوحة الجانب الأيسر) → انقر بزر الماوس الأيمن على الجداول، واختر إنشاء جدول جديد لبدء إنشاء جدول جديد.

Creating a new database table with DBeaver GUI.

5. قم بتسمية الجدول الجديد الخاص بك، ولكن اختيار هذا البرنامج التعليمي هو ata_Table، كما هو موضح أدناه.

تأكد من أن اسم الجدول يتطابق مع اسم الجدول الذي ستحدده في طريقة to_sql (“اسم الجدول”) في الخطوة السابعة من قسم “الحصول واستهلاك بيانات واجهة برمجة التطبيقات”.

Naming the new table

6. بعد ذلك، قم بتوسيع الجدول الجديد (ata_table) → انقر بزر الماوس الأيمن فوق الأعمدة → إنشاء عمود جديد لإنشاء عمود جديد.

Initiating creating a new column

7. قم بتقديم اسم العمود، كما هو موضح أدناه، وحدد مربع Not Null، وانقر فوق موافق لإنشاء العمود الجديد.

في الواقع، سترغب في إضافة عمود يسمى “id”. لماذا؟ معظم واجهات برمجة التطبيقات ستحتوي على معرف، وستقوم إطار بيانات باندا الخاص بـ Python تلقائيًا بملء الأعمدة الأخرى.

Creating a column

8. انقر فوق حفظ (أسفل اليمين) أو اضغط على Ctrl + S لحفظ التغييرات بمجرد التحقق من العمود الذي تم إنشاؤه حديثًا (id)، كما هو موضح أدناه.

Verifying newly-created column

9. أخيرًا، انقر فوق Persist للحفاظ على التغييرات التي قمت بها على قاعدة البيانات.

Persisting the database changes

الحصول على بيانات واستهلاك واجهة برمجة التطبيقات

الآن بعد أن قمت بإنشاء قاعدة بيانات لتخزين البيانات، تحتاج إلى جلب البيانات من مزود واجهة برمجة التطبيقات الخاص بك ودفعها إلى قاعدة البيانات الخاصة بك باستخدام Python. ستستخدم بياناتك لتصورها على Power BI.

للاتصال بمزود واجهة برمجة التطبيقات الخاص بك، ستحتاج إلى ثلاث قطع رئيسية من المعلومات؛ طريقة الترخيص، عنوان URL الأساسي لواجهة برمجة التطبيقات، ونقطة النهاية لواجهة برمجة التطبيقات. إذا كنت غير متأكد من كيفية الحصول على هذه المعلومات، قم بزيارة موقع وثائق مزود واجهة برمجة التطبيقات الخاص بك.

أدناه صفحة توثيق من Syncro.

Overviewing Syncro API documentation

1. قم بفتح VS Code، أنشئ ملف Python وقم بتسمية الملف وفقًا لبيانات API المتوقعة من الملف. سيكون هذا الملف مسؤولًا عن جلب ودفع بيانات API إلى قاعدة البيانات الخاصة بك (اتصال قاعدة البيانات).

هناك العديد من مكتبات Python المتاحة للمساعدة في اتصال قاعدة البيانات، ولكنك ستستخدم SQLAlchemy في هذا البرنامج التعليمي.

قم بتشغيل الأمر أدناه في نافذة الأوامر في VS Code لتثبيت SQLAlchemy في بيئتك.

pip install SQLAlchemy
Installing SQLAlchemy

2. بعد ذلك، قم بإنشاء ملف يسمى connection.py، قم بملأ الكود أدناه، قم بتبديل القيم بما يتناسب، ثم احفظ الملف.

عندما تبدأ في كتابة النصوص للتفاعل مع قاعدة البيانات الخاصة بك، يجب إقامة اتصال بقاعدة البيانات قبل أن تقبل أي أمر من النص.

ولكن بدلاً من إعادة كتابة سلسلة اتصال قاعدة البيانات لكل نص تكتبه، يكرس الكود أدناه لإجراء هذا الاتصال بحيث يمكن استدعاؤه/الرجوع إليه من قبل نصوص أخرى.

# استيراد الوحدات
# محرك الاتصال من SQLAlchemy
from sqlalchemy import create_engine
import sqlalchemy as db
from sqlalchemy.exc import SQLAlchemyError

# استخدام المنطق try/except لإنشاء اتصال قاعدة بيانات MySQL
# قدم بيانات اعتماد خادم MySQL أدناه:
# db: اسم قاعدة البيانات
# user: اسم المستخدم
# pw: كلمة المرور
try:
    engine = create_engine("mysql+pymysql://{user}:{pw}@localhost/{db}"
    .format(
        db="ata_database",
        user="ata_levi",
        pw="password"
    ))
    print("Connected")
except SQLAlchemyError as e:
    error = str(e.dict['orig'])
print(error)

3. افتح نافذة الأوامر في برنامج Visual Studio (Ctrl+Shift+`)، وقم بتشغيل الأوامر التالية لتثبيت pandas و requests.

pip install pandas
pip install requests
Installing pandas and requests

4. قم بإنشاء ملف آخر بلغة Python يسمى invoices.py (أو اسمه بشكل مختلف)، واملأ الشفرة التالية في الملف.

سوف تضيف مقتطفات الشفرة إلى ملف invoices.py في كل خطوة تالية، ولكن يمكنك عرض الشفرة الكاملة على مستودع GitHub الخاص بـ ATA.

سيتم تشغيل النص البرمجي invoices.py من النص البرمجي الرئيسي الموضح في القسم التالي، الذي يستخرج بيانات API الأولى الخاصة بك.

الشفرة التالية تقوم بالأعمال التالية:

  • تستهلك البيانات من API الخاص بك وتكتبها في قاعدة البيانات الخاصة بك.
  • تستبدل طريقة التوثيق والمفتاح وعنوان URL الأساسي ونقاط نهاية الـ API ببيانات اعتماد مزود الـ API الخاص بك.
# استيراد الوحدات الأساسية
import pymysql
from pandas.core.frame import DataFrame
import requests
import pandas as pd
from requests.api import get
from sqlalchemy.dialects.mysql import LONGTEXT

import os
import schedule
import time
import asyncio

# استيراد سلسلة الاتصال من connection.py
from connection import engine

5. أضف مقتطف الشفرة التالي إلى الملف invoices.py لتعريف العناوين، على سبيل المثال:

  • نوع تنسيق البيانات الذي تتوقع استلامه من API الخاص بك.
  • يجب أن يرافق عنوان URL الأساسي ونقطة النهاية طريقة التوثيق والمفتاح المقابلين.

تأكد من تغيير القيم أدناه بالقيم الخاصة بك.

# تعريف معلمات الطلب
headers = {
'accept':'application/json',
'authorization':'Bearer *Your-bearer-code if the authentication is Bearer*'
}
baseurl = 'https://*your base url*'
endpoint  = 'your endpoint' 

6. قم بإضافة الدالة الخاصة async التالية إلى ملف invoices.py.

يستخدم الكود أدناه AsyncIO لإدارة النصوص المتعددة من نص واحد رئيسي مشروح في الجزء التالي. عندما ينمو مشروعك ليشمل نقاط نهاية API متعددة ، فإنه من الممارسة الجيدة أن تكون للنصوص التي تستخدم API الخاص بك ملفاتها الخاصة.

# قم بلف الكود بدالة async لجعله غير متزامن.
async def get_invoices():
	print("Going through the invoices")
	def main_request(baseurl,endpoint,x,headers):
	# استخدم طريقة get في request لاستخراج البيانات باستخدام المعاملات المحددة.
	# استخدم f string لتكرار الصفحات عند استدعاء الدالة.
	r = requests.get(baseurl + endpoint + f'?page={x}',headers=headers)
	return r.json()

7. أخيرًا ، قم بإضافة الكود أدناه إلى ملف invoices.py ، حيث تتعامل دالة get_pages مع ترقيم صفحات API الخاص بك.

تقوم هذه الدالة بإرجاع إجمالي عدد الصفحات في API الخاص بك وتساعد في استخدام دالة range في تكرار جميع الصفحات.

اتصل بمطوري API الخاص بك حول طريقة ترقيم الصفحات المستخدمة بواسطة مزود API الخاص بك.

  def get_pages(response):
			return response['meta']['total_pages']

	def parse_json(response):
	    charlist =[]
	    for item in response['invoices']:
	        charlist.append(item)
	    return charlist
	# استدعاء الوظيفة الرئيسية بمعلمات محددة مسبقًا.
	data = main_request(baseurl=baseurl,endpoint=endpoint,x=1,headers=headers)
	
	main_invoices = []
	# التكرار/تقسيم البيانات عبر واجهة برمجة التطبيقات.
  # قد يستخدم مزود واجهة برمجة التطبيقات الخاص بك طريقة مختلفة 
	# للتقسيم.
	for x in range(1,get_pages(data)+1):
	
	    print(x)
	    main_invoices.extend(parse_json(main_request(baseurl,endpoint,x,headers)))
	df_invoices = pd.DataFrame(main_invoices)
	
	# كتابة بيانات جديدة إلى قاعدة بيانات SQL.
	# ملاحظة: تأكد من أن اسم الجدول في قاعدة البيانات يتطابق مع الاسم المقدم هنا.
	df_invoices.to_sql('invoices',con=engine,if_exists='replace',index=False)
	
  # تنتظر هذه الوظيفة الوظيفة get_invoices،
	# تشغل الوظيفة get_invoices() عند الاستدعاء،
	# وسيتم استدعاؤها بواسطة ملف خارجي لاستدعاء استدعاء واجهة برمجة التطبيقات الخاص بك.

async def call_invoices():
	await get_invoices()

إذا كنت تفضل إضافة مزيد من نقاط نهاية واجهة برمجة التطبيقات إلى بياناتك:

  • كرر الخطوات من الرابعة إلى السادسة من قسم “إدارة قواعد البيانات MySQL باستخدام DBeaver”.
  • كرر جميع الخطوات في قسم “الحصول على بيانات واجهة برمجة التطبيقات واستهلاكها”.
  • قم بتغيير نقطة نهاية واجهة برمجة التطبيقات إلى أخرى ترغب في استهلاكها.

مزامنة نقاط نهاية واجهة برمجة التطبيقات

لديك الآن قاعدة بيانات واتصال بواجهة برمجة التطبيقات، وأنت جاهز لبدء استهلاك واجهة برمجة التطبيقات من خلال تشغيل الكود في ملف invoices.py. ولكن القيام بذلك سيقيدك إلى استهلاك نقطة نهاية واجهة برمجة التطبيقات واحدة في نفس الوقت.

كيفية التجاوز عن الحدود؟ ستقوم بإنشاء ملف Python آخر كملف مركزي يستدعي وظائف واجهة برمجة التطبيق (API) من ملفات Python المختلفة ويقوم بتشغيل الوظائف بشكل غير متزامن باستخدام AsyncIO. بهذه الطريقة ، تحافظ على نظافة برمجتك وتتيح لك تجميع العديد من الوظائف معًا.

1. قم بإنشاء ملف Python جديد يسمى central.py وأضف الكود أدناه.

تمامًا مثل ملف invoices.py ، ستقوم بإضافة مقتطفات الكود إلى ملف central.py في كل خطوة ، ولكن يمكنك عرض الشيفرة الكاملة على مستودع الشفرة الخاص بـ ATA على موقع GitHub.

الكود أدناه يستورد الوحدات الأساسية والنصوص من ملفات أخرى باستخدام بنية استيراد الوحدة استيراد <اسم الوظيفة> .

from datetime import datetime
from numpy import product
# استيراد وظيفة API لجلب الفواتير من ملف invoices.py
from invoices import call_invoices
import asyncio
import time
import schedule
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from datetime import datetime
import os

2. بعد ذلك ، أضف الكود التالي للتحكم في النصوص من ملف الفواتير في ملف central.py.

تحتاج إلى الإشارة/استدعاء الدالة call_invoices من ملف الفواتير إلى مهمة AsyncIO (invoice_task) في central.py.

# إنشاء الدالة الرئيسية
async def chain():
	def _handle_task_result(task: asyncio.Task) -> None:
		try:
				task.result()
		except asyncio.CancelledError:
				pass
		except Exception:
				logging.exception('Exception raised by task %r',task)
	start = time.perf_counter()
	# إنشاء مهمة للدالة المستوردة من ملف invoices.py
	invoice_task = asyncio.create_task(call_invoices())

3. بعد إنشاء مهمة AsyncIO، انتظر المهمة لاستدعاء وتنفيذ دالة call_invoices من invoice.py عندما يبدأ دالة chain (في الخطوة الثانية) في التشغيل.

	# في انتظار المهمة المنشأة
	await invoice_task
	# تتبع أوقات المهمة
	end = time.perf_counter()-start
	l_time =  time.localtime()
	human_time = time.asctime(l_time)
	print (f"chained result took {end:0.2f} seconds")
	print(f"Current time is {human_time}")
	

4. إنشاء AsyncIOScheduler لجدولة وظيفة لتنفيذ البرنامج النصي. تقوم الوظيفة المضافة في هذا الكود بتشغيل دالة chain بفاصل زمني مقداره ثانية واحدة.

تعتبر هذه الوظيفة مهمة لضمان استمرار تشغيل البرنامج النصي وتحديث البيانات.

if name == "main":
# يتيح المجدول إعادة تشغيل الكود بشكل دائم وإجراء فواصل نوم بين الدورات.
    scheduler = AsyncIOScheduler()
scheduler.add_job(chain,'interval',seconds=1)
scheduler.start()
print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C'))

try:
	asyncio.get_event_loop().run_forever()
except (KeyboardInterrupt,SystemExit):
    pass

5. أخيرًا، قم بتشغيل البرنامج النصي central.py على VS Code، كما هو موضح أدناه.

Running the central.py script

بعد تشغيل البرنامج النصي، سترى النتائج على الطرفية مثل النتيجة أدناه.

Viewing central.py script outputs

أدناه، تؤكد النتيجة أن الفواتير تمت إضافتها إلى قاعدة البيانات.

Verifying invoices are added to the database

تطوير مرئيات Power BI

بعد كتابة برنامج يتصل ببيانات واجهة برمجة التطبيقات ويدفع هذه البيانات إلى قاعدة بيانات، أنت على استعداد تقريبًا لاستخدام بياناتك. ولكن أولاً، ستقوم بدفع البيانات في قاعدة البيانات إلى Power BI للتصور، وهو الهدف النهائي.

الكثير من البيانات غير مفيد إذا لم تتمكن من تصور البيانات وإجراء اتصالات عميقة. لحسن الحظ، فإن مرئيات Power BI تشبه الرسوم البيانية التي يمكن أن تجعل المعادلات الرياضية المعقدة تبدو بسيطة وقابلة للتنبؤ.

1. افتح Power BI من سطح المكتب أو قائمة البدء.

2. انقر فوق أيقونة مصدر البيانات أعلاه في القائمة المنسدلة “الحصول على البيانات” في النافذة الرئيسية لـ Power BI. تظهر نافذة منبثقة حيث يمكنك تحديد مصدر البيانات الذي ترغب في استخدامه (الخطوة الثالثة).

Accessing data sources

3. ابحث عن MySQL وحدد قاعدة بيانات MySQL ثم انقر على الاتصال للبدء في الاتصال بقاعدة بيانات MySQL الخاصة بك.

Selecting MySQL as the data source to connect

4. الآن، قم بالاتصال بقاعدة بيانات MySQL الخاصة بك باستخدام البيانات التالية:

  • أدخل localhost:3306 لأنك تتصل بخادم MySQL المحلي الخاص بك على المنفذ 3306.
  • قدم اسم قاعدة البيانات الخاصة بك، في هذه الحالة، ata_db.
  • انقر فوق موافق للاتصال بقاعدة بيانات MySQL الخاصة بك.
Connecting to MySQL database

5. الآن، انقر على تحويل البيانات (أسفل اليمين) لعرض نظرة عامة على البيانات في محرر الاستعلامات في Power BI (الخطوة الخامسة).

Initiating transforming data

6. بعد معاينة مصدر البيانات، انقر على إغلاق وتطبيق للعودة إلى التطبيق الرئيسي وتأكيد ما إذا كانت هناك أي تغييرات تم تطبيقها.

يعرض محرر الاستعلامات الجداول من مصدر البيانات على الجانب الأيسر. في الوقت نفسه، يمكنك التحقق من تنسيق البيانات قبل المتابعة إلى التطبيق الرئيسي.

Previewing the data source

7. انقر على علامة تبويب أدوات الجدول، ثم حدد أي جدول في لوحة الحقول وانقر على إدارة العلاقات لفتح معالج العلاقات.

قبل إنشاء الرسوم البيانية، يجب التأكد من أن الجداول الخاصة بك متعلقة، لذا يجب تحديد أي علاقة بين الجداول بشكل صريح. لماذا؟ لأن Power BI لا يكتشف تلقائيًا الترابط المعقد بين الجداول بعد.

Opening relationships wizard

8. حدد علامات الصناديق للعلاقات الموجودة للتحرير، ثم انقر على تحرير. ستظهر نافذة منبثقة حيث يمكنك تحرير العلاقات المحددة (الخطوة التاسعة).

ولكن إذا كنت تفضل إضافة علاقة جديدة ، فانقر على “جديد” بدلاً من ذلك.

Selecting relationships to edit

9. تحرير العلاقات باستخدام ما يلي:

  • انقر فوق حقل القوائم المنسدلة للجداول وحدد جدولًا.
  • انقر على الرؤوس لتحديد الأعمدة المراد استخدامها.
  • حدد مربع “جعل هذه العلاقة نشطة” لضمان صحة العلاقات.
  • انقر فوق موافق لإنشاء العلاقة وإغلاق نافذة تحرير العلاقة.
Editing existing relationship

10. الآن ، انقر على نوع الجدول تحت لوحة التصورات (الأقصى اليمين) لإنشاء التصور الأول ، وسيظهر تصور الجدول الفارغ (الخطوة 11).

Adding the table visual

11. حدد التصور الجدول وحقول البيانات (في لوحة الحقول) لإضافتها إلى التصور الجدولي الخاص بك ، كما هو موضح أدناه.

Adding data fields to the table visual

12. أخيرًا ، انقر على نوع التصور الفاصل لإضافة تصور آخر. كما يوحي الاسم ، يقوم التصور الفاصل بتقسيم البيانات من خلال تصفية التصورات الأخرى.

بعد إضافة التصور الفاصل ، حدد البيانات من لوحة الحقول لإضافتها إلى التصور الفاصل.

Adding a slicer visual and adding a data field

تغيير التصورات

مظاهر التصورات الافتراضية لطيفة جدًا. ولكن هل لا تكون رائعة إذا كنت تستطيع تغيير مظهر التصورات إلى شيء غير ممل؟ اسمح لـ Power BI أن يتولى الأمر.

انقر على أيقونة “تنسيق التصور الخاص بك” تحت التصور للوصول إلى محرر التصور ، كما هو موضح أدناه.

استغرق بعض الوقت في التلاعب بإعدادات التصور للحصول على المظهر المطلوب للتصورات الخاصة بك. ستترابط التصورات الخاصة بك طالما أنك تقوم بإنشاء علاقة بين الجداول التي تشارك في التصورات الخاصة بك.

Accessing the Power BI visualization editor

بعد تغيير إعدادات التصوير، يمكنك استخراج تقارير مثل تلك الموجودة أدناه.

الآن، يمكنك تصور وتحليل بياناتك بدون تعقيد أو إجهاد لعينيك.

Testing Power BI visualizations

في التصوير التالي، عند النظر إلى مخطط الاتجاهات، سترى أن هناك خطأً ما حدث في إبريل 2020. كان ذلك عندما بدأت إجراءات الإغلاق بسبب فيروس كوفيد-19 في جنوب أفريقيا.

هذا الإخراج يثبت فقط قوة Power BI في توفير تصورات دقيقة للبيانات.

Testing Power BI visualizations

استنتاج

يهدف هذا البرنامج التعليمي إلى عرض كيفية إنشاء خط أنابيب بيانات ديناميكي حي بجلب البيانات من نقاط واجهة برمجة التطبيقات (API). بالإضافة إلى ذلك، معالجة ودفع البيانات إلى قاعدة البيانات وPower BI باستخدام لغة Python. باستخدام هذه المعرفة الجديدة، يمكنك الآن استهلاك بيانات واجهة برمجة التطبيقات وإنشاء تصورات بيانات خاصة بك.

يقوم المزيد والمزيد من الشركات بإنشاء تطبيقات ويب باستخدام واجهات برمجة تطبيقات قائمة على مبدأ الراحة. وفي هذه اللحظة، أنت الآن واثق في التعامل مع واجهات برمجة تطبيقات باستخدام لغة Python وإنشاء تصورات بيانات باستخدام Power BI، مما يمكن أن يسهم في اتخاذ قرارات الأعمال.

Source:
https://adamtheautomator.com/power-bi-python/