كيفية استخدام واجهات برمجة التطبيقات BigQuery للمبتدئين

@apidog

@apidog

26 يونيو 2025

كيفية استخدام واجهات برمجة التطبيقات BigQuery للمبتدئين

لقد أحدثت Google BigQuery ثورة في الطريقة التي تتعامل بها المنظمات مع تحليلات البيانات واسعة النطاق. تجعل بنية الخادم بدون خادم، وقابلية التوسع، وواجهة SQL المألوفة أداة قوية لاستخلاص الرؤى من مجموعات البيانات الضخمة. بينما يعد التفاعل مع BigQuery من خلال وحدة تحكم Google Cloud أو أداة سطر الأوامر bq أمرًا شائعًا، فإن القوة الحقيقية للأتمتة والتكامل وتطوير التطبيقات المخصصة تنفتح من خلال مجموعة شاملة من واجهات برمجة التطبيقات (APIs).

تقدم هذه الدليل استكشافًا خطوة بخطوة حول كيفية استخدام واجهات برمجة التطبيقات BigQuery، مما يمكنّك من التفاعل برمجيًا مع مستودع بياناتك، وبناء خطوط بيانات، ودمج BigQuery في تطبيقاتك، وإدارة الموارد بفعالية. سنغطي الأنواع المختلفة لواجهات برمجة التطبيقات المتاحة، وكيفية إعداد بيئتك، وأمثلة عملية باستخدام مكتبة عميل Python، ونعرف بواجهات برمجة التطبيقات المتخصصة للاستخدامات المتقدمة.

💡
هل تريد أداة اختبار واجهة برمجة التطبيقات رائعة تنتج وثائق واجهة برمجة التطبيقات الجميلة؟

هل تريد منصة متكاملة، شاملة لفريق المطورين لديك للعمل معًا بأقصى إنتاجية؟

يقدم Apidog جميع متطلباتك، ويستبدل Postman بسعر أكثر ملاءمة بكثير!
زر

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

قبل الغوص في الكود، من الضروري فهم المفاهيم الأساسية والطرق المختلفة التي يمكنك من خلالها التفاعل برمجيًا مع BigQuery.

المفاهيم الأساسية لـ BigQuery:

أنواع واجهات برمجة التطبيقات من BigQuery:

تقدم BigQuery عدة طرق للتفاعل مع خدماتها برمجيًا:

REST API: هذه هي واجهة برمجة التطبيقات الأساسية المبنية على HTTP وJSON. توفر وصولًا مباشرًا إلى موارد BigQuery والعمليات. يمكنك التفاعل معها باستخدام طلبات HTTP القياسية (GET، POST، PUT، DELETE) تستهدف نقاط نهاية محددة (على سبيل المثال، https://bigquery.googleapis.com/bigquery/v2/projects/{projectId}/datasets). بينما هي قوية وتوفر تحكمًا دقيقًا، يتطلب استخدام واجهة برمجة تطبيقات REST مباشرةً التعامل مع المصادقة، وتنسيق الطلب، وتحليل الاستجابة، ومعالجة الأخطاء يدويًا. غالبًا ما تتضمن المصادقة رموز وصول OAuth 2.0.

مكتبات العملاء: تقدم Google مكتبات عملاء عالية المستوى لعدة لغات برمجة شائعة (بما في ذلك Python وJava وGo وNode.js وC# وPHP وRuby). تغلف هذه المكتبات واجهة برمجة التطبيقات REST الأساسية، وتقدم تجربة أكثر تعبيرًا، ومريحة للمطورين. تبسط المهام الشائعة، وتتعامل مع المصادقة (غالبًا بشكل تلقائي عبر بيانات اعتماد التطبيق الافتراضية)، وتدير الإعادة، وتقلل من كمية الكود الأولي الذي تحتاج إلى كتابته. هذه هي الطريقة الموصى بها لمعظم تطوير التطبيقات.

واجهات برمجة التطبيقات المتخصصة: لمهام محددة عالية الأداء أو متخصصة، تقدم BigQuery واجهات برمجة تطبيقات مخصصة:

إعداد بيئتك

قبل أن تتمكن من بدء إجراء مكالمات APIs، تحتاج إلى تكوين بيئتك المحلية أو الخادم.

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

  1. حساب Google Cloud: تحتاج إلى حساب Google Cloud نشط.
  2. مشروع Google Cloud: قم بإنشاء مشروع جديد أو حدد واحدًا موجودًا في وحدة تحكم Google Cloud. لاحظ معرّف مشروعك.
  3. تمكين واجهة برمجة تطبيقات BigQuery: تأكد من تمكين واجهة برمجة تطبيقات BigQuery لمشروعك. يمكنك القيام بذلك عبر وحدة التحكم السحابية (APIs & Services > Library > البحث عن "واجهة برمجة تطبيقات BigQuery" > تمكين). قد تحتاج أيضًا إلى تمكين واجهات برمجة التطبيقات الأخرى مثل واجهة برمجة تطبيقات تخزين BigQuery أو واجهة برمجة تطبيقات اتصال BigQuery بناءً على حالة الاستخدام الخاصة بك.
  4. الفوترة: تأكد من تمكين الفوترة لمشروعك. تتسبب عمليات BigQuery في تكاليف بناءً على تخزين البيانات، وتحليل العمليات، وإدراج التدفقيات.

المصادقة:

تحتاج تطبيقك إلى مصادقة إلى Google Cloud لإثبات هويتها وتفويض الوصول إلى موارد BigQuery. الطريقة الموصى بها لمعظم السيناريوهات هي بيانات اعتماد التطبيق الافتراضية (ADC).

  1. قم بإنشاء حساب خدمة في وحدة التحكم السحابية (IAM & Admin > Service Accounts).
  2. امنح الأدوار اللازمة لـ BigQuery (مثل BigQuery Data Editor وBigQuery Job User وBigQuery User) لحساب الخدمة.
  3. قم بتنزيل ملف مفتاح حساب الخدمة (بتنسيق JSON).
  4. اضبط متغير البيئة GOOGLE_APPLICATION_CREDENTIALS إلى المسار المطلق لملف المفتاح JSON الذي تم تنزيله. ستستخدم مكتبات العملاء هذا المفتاح للمصادقة إذا تم تعيين متغير البيئة.

تثبيت مكتبات العملاء (مثال Python):

سنركز على Python لأمثلتنا. يمكنك تثبيت المكتبات الضرورية باستخدام pip:

pip install google-cloud-bigquery
# اختياري: تثبيت مكتبة API للتخزين لقراءات أسرع
pip install google-cloud-bigquery-storage
# اختياري: تثبيت تكامل Pandas وdb-dtypes لتحسين معالجة الأنواع
pip install pandas db-dtypes pyarrow

تأكد من أنك قد قمت بتثبيت Python (يوصى بالإصدار 3.7+ لأحدث ميزات المكتبة).

استخدام مكتبة عميل BigQuery (أمثلة Python)

الآن، دعنا نستكشف العمليات الشائعة في BigQuery باستخدام مكتبة Python google-cloud-bigquery.

1. استيراد وت inicializar العميل:

أولاً، استورد المكتبة. ثم، أنشئ مثيل عميل. إذا تم تكوين ADC بشكل صحيح، فسوف يقوم العميل بالمصادقة تلقائيًا.

from google.cloud import bigquery
import pandas as pd

# إنشئ كائن عميل BigQuery.
# إذا تم تعيين GOOGLE_APPLICATION_CREDENTIALS، فإنه يستخدم حساب الخدمة.
# إذا تم تشغيل gcloud auth application-default login، فإنه يستخدم تلك البيانات الاعتمادية.
# إذا كان قيد التشغيل على بنية GCP، فإنه يستخدم حساب الخدمة الخاص بال实例.
client = bigquery.Client()

# يمكنك تحديد معرّف المشروع صراحة إذا لزم الأمر،
# وإلا فإنه يستنتج عمومًا من البيئة/بيانات اعتماد ADC.
# client = bigquery.Client(project='your-project-id')

print("تم إنشاء العميل بنجاح.")

2. تشغيل الاستعلامات:

عملية الأكثر شيوعًا هي تشغيل استعلامات SQL.

# تعريف استعلام SQL الخاص بك
query = """
    SELECT name, SUM(number) as total_people
    FROM `bigquery-public-data.usa_names.usa_1910_2013`
    WHERE state = 'TX'
    GROUP BY name, state
    ORDER BY total_people DESC
    LIMIT 10
"""

# قم بإجراء طلب API وانتظر حتى يكمل الوظيفة.
query_job = client.query(query)  # طلب API
print(f"بدأت الوظيفة: {query_job.job_id}")

# انتظر حتى تكتمل الوظيفة واحصل على النتائج.
rows = query_job.result()  # ينتظر حتى تكتمل الوظيفة.

print("\nأعلى 10 أسماء في TX (1910-2013):")
for row in rows:
    # يمكن الوصول إلى قيم الصف بواسطة اسم الحقل أو الفهرس.
    print(f"الاسم: {row.name}, العدد: {row['total_people']}") # الوصول بواسطة السمة أو المفتاح

# تحويل النتائج إلى DataFrame من Pandas
df = rows.to_dataframe()
print("\nالنتائج كـ DataFrame من Pandas:")
print(df.head())
query = """
    SELECT corpus, COUNT(word) as distinct_words
    FROM `bigquery-public-data.samples.shakespeare`
    GROUP BY corpus
    ORDER BY distinct_words DESC;
"""
job_config = bigquery.QueryJobConfig(
    # استخدام صياغة SQL القياسية للاستعلامات.
    use_legacy_sql=False
)

# ابدأ الاستعلام، مع تمرير التكوين الإضافي.
query_job = client.query(query, job_config=job_config) # لا ينتظر
print(f"بدأت الوظيفة غير المتزامنة: {query_job.job_id}")

# --- لاحقًا في تطبيقك ---
# تحقق من حالة الوظيفة (اختياري)
# from google.cloud.exceptions import NotFound
# try:
#     job = client.get_job(query_job.job_id, location=query_job.location)
#     print(f"حالة الوظيفة {job.job_id}: {job.state}")
#     if job.state == "DONE":
#         if job.error_result:
#             print(f"فشلت الوظيفة: {job.errors}")
#         else:
#             results = job.result() # احصل على النتائج
#             print("تم جلب النتائج.")
#             # معالجة النتائج...
# except NotFound:
#     print(f"لم يتم العثور على الوظيفة {query_job.job_id}.")

# أو انتظر ببساطة حتى الاكتمال عندما يحتاج الأمر
results = query_job.result() # ستقوم هذه بالت BLOCK حتى تنتهي الوظيفة
print("اكتملت الوظيفة غير المتزامنة.")
for row in results:
    print(f"النص: {row.corpus}, الكلمات المميزة: {row.distinct_words}")
from google.cloud.bigquery import ScalarQueryParameter, ArrayQueryParameter, StructQueryParameter, QueryJobConfig

# مثال: العثور على أسماء تبدأ ببادئة محددة في ولاية معينة
state_param = "NY"
prefix_param = "Ma"
min_count_param = 1000

query = """
    SELECT name, SUM(number) as total_people
    FROM `bigquery-public-data.usa_names.usa_1910_2013`
    WHERE state = @state_abbr AND name LIKE @name_prefix
    GROUP BY name
    HAVING total_people >= @min_count
    ORDER BY total_people DESC;
"""

job_config = QueryJobConfig(
    query_parameters=[
        ScalarQueryParameter("state_abbr", "STRING", state_param),
        # استخدم 'val%' لمشغل LIKE
        ScalarQueryParameter("name_prefix", "STRING", f"{prefix_param}%"),
        ScalarQueryParameter("min_count", "INT64", min_count_param),
    ]
)

query_job = client.query(query, job_config=job_config)
print(f"بدأت وظيفة الاستعلام المعلمة: {query_job.job_id}")

rows = query_job.result()

print(f"\nالأسماء التي تبدأ بـ '{prefix_param}' في {state_param} مع >= {min_count_param} شخص:")
for row in rows:
    print(f"الاسم: {row.name}, العدد: {row.total_people}")

3. إدارة مجموعات البيانات:

يمكنك إنشاء، قائمة، والحصول على تفاصيل، وحذف مجموعات البيانات.

# تعريف معرّف مجموعة البيانات والموقع
project_id = client.project
dataset_id = f"{project_id}.my_new_dataset"
dataset_location = "US" # على سبيل المثال، "US"، "EU"، "asia-northeast1"

# بناء كائن Dataset كامل لإرساله إلى واجهة برمجة التطبيقات.
dataset = bigquery.Dataset(dataset_id)
dataset.location = dataset_location
dataset.description = "مجموعة البيانات التي تم إنشاؤها عبر مكتبة عميل Python"

try:
    # إجراء طلب API لإنشاء مجموعة البيانات.
    dataset = client.create_dataset(dataset, timeout=30)  # إجراء طلب API.
    print(f"تم إنشاء مجموعة البيانات {client.project}.{dataset.dataset_id}")

    # قائمة مجموعات البيانات في المشروع
    print("\nمجموعات البيانات في المشروع:")
    datasets = list(client.list_datasets()) # طلب API
    if datasets:
        for ds in datasets:
            print(f"\t{ds.dataset_id}")
    else:
        print(f"\tالمشروع {client.project} لا يحتوي على أي مجموعات بيانات.")

    # الحصول على معلومات مجموعة البيانات
    retrieved_dataset = client.get_dataset(dataset_id) # طلب API
    print(f"\nاسترداد معلومات مجموعة البيانات لـ {dataset_id}:")
    print(f"\tالوصف: {retrieved_dataset.description}")
    print(f"\tالموقع: {retrieved_dataset.location}")

except Exception as e:
    print(f"حدث خطأ أثناء عمليات مجموعة البيانات: {e}")

finally:
    # تنظيف: حذف مجموعة البيانات
    try:
        client.delete_dataset(
            dataset_id, delete_contents=True, not_found_ok=True
        )  # طلب API
        print(f"\nتم حذف مجموعة البيانات '{dataset_id}' بنجاح.")
    except Exception as e:
         print(f"خطأ في حذف مجموعة البيانات {dataset_id}: {e}")

4. إدارة الجداول:

توجد عمليات مشابهة للجداول: إنشاء الجداول (تحديد المخطط)، تحميل البيانات، الحصول على البيانات الوصفية، وحذف الجداول.

# باستخدام معرّف مجموعة البيانات التي تم إنشاؤها سابقًا (تأكد من وجودها أو إزالة خطوة الحذف أعلاه)
dataset_id_for_table = "my_new_dataset" # استخدم معرّف مجموعة بيانات صالح
table_id = f"{client.project}.{dataset_id_for_table}.my_new_table"

# تحديد المخطط
schema = [
    bigquery.SchemaField("full_name", "STRING", mode="REQUIRED"),
    bigquery.SchemaField("age", "INTEGER", mode="REQUIRED"),
    bigquery.SchemaField("email", "STRING", mode="NULLABLE"),
]

# إنشاء الجدول
table = bigquery.Table(table_id, schema=schema)
try:
    # تأكد من أن مجموعة البيانات موجودة أولاً
    client.create_dataset(dataset_id_for_table, exists_ok=True)

    table = client.create_table(table)  # طلب API
    print(
        f"تم إنشاء الجدول {table.project}.{table.dataset_id}.{table.table_id}"
    )

    # --- تحميل البيانات (مثال: من pandas DataFrame) ---
    data = {'full_name': ['Alice Smith', 'Bob Johnson'],
            'age': [30, 45],
            'email': ['alice@example.com', None]}
    dataframe = pd.DataFrame(data)

    job_config = bigquery.LoadJobConfig(
        # يُوصى بتحديد المخطط، مما يضمن الأنواع الصحيحة
        schema=schema,
        # اختياري: الكتابة فوق بيانات الجدول
        write_disposition="WRITE_TRUNCATE",
        # أو الإضافة: write_disposition="WRITE_APPEND",
    )

    load_job = client.load_table_from_dataframe(
        dataframe, table_id, job_config=job_config
    )  # طلب API
    print(f"بدء الوظيفة {load_job.job_id} لتحميل البيانات من DataFrame")

    load_job.result()  # ينتظر حتى تكتمل الوظيفة.
    print("اكتمل تحميل وظيفة DataFrame.")

    destination_table = client.get_table(table_id) # طلب API
    print(f"تم تحميل {destination_table.num_rows} صفًا في الجدول {table_id}")

    # --- تحميل البيانات (مثال: من URI لتخزين Google Cloud) ---
    # افترض وجود ملف CSV gs://your-bucket/data.csv يحتوي على بيانات متوافقة
    # uri = "gs://your-bucket/data.csv"
    # job_config_gcs = bigquery.LoadJobConfig(
    #     schema=schema,
    #     skip_leading_rows=1, # تخطى صف الرأس
    #     source_format=bigquery.SourceFormat.CSV,
    #     write_disposition="WRITE_APPEND", # الإضافة إلى البيانات الموجودة
    # )
    # load_job_gcs = client.load_table_from_uri(
    #     uri, table_id, job_config=job_config_gcs
    # )
    # print(f"بدء الوظيفة {load_job_gcs.job_id} لتحميل البيانات من GCS")
    # load_job_gcs.result()
    # print("اكتمل تحميل GCS.")
    # destination_table = client.get_table(table_id)
    # print(f"إجمالي الصفوف بعد تحميل GCS: {destination_table.num_rows}")

except Exception as e:
    print(f"حدث خطأ أثناء عمليات الجدول: {e}")

finally:
    # تنظيف: حذف الجدول
    try:
        client.delete_table(table_id, not_found_ok=True)  # طلب API
        print(f"تم حذف الجدول '{table_id}' بنجاح.")
        # اختياريًا حذف مجموعة البيانات مرة أخرى إذا كانت لمجرد هذا المثال
        # client.delete_dataset(dataset_id_for_table, delete_contents=True, not_found_ok=True)
        # print(f"تم حذف مجموعة البيانات '{dataset_id_for_table}' بنجاح.")
    except Exception as e:
        print(f"خطأ في حذف الجدول {table_id}: {e}")

5. العمل مع الوظائف:

تخلق جميع العمليات غير المتزامنة (الاستعلام، التحميل، التصدير، النسخ) موارد الوظيفة. يمكنك سرد وإدارة هذه الوظائف.

# قائمة الوظائف الحديثة
print("\nوظائف BigQuery الحديثة:")
for job in client.list_jobs(max_results=10): # طلب API
    print(f"معرّف الوظيفة: {job.job_id}, النوع: {job.job_type}, الحالة: {job.state}, التاريخ: {job.created}")

# الحصول على وظيفة محددة (استبدل بمعرّف وظيفة صالح من التشغيلات السابقة)
# try:
#     job_id_to_get = "..." # استبدل بمعرّف وظيفة حقيقي
#     location = "US"      # استبدل بموقع الوظيفة إذا لم يكن الافتراضي
#     retrieved_job = client.get_job(job_id_to_get, location=location) # طلب API
#     print(f"\nتفاصيل الوظيفة {retrieved_job.job_id}:")
#     print(f"\tالحالة: {retrieved_job.state}")
#     if retrieved_job.error_result:
#         print(f"\tخطأ: {retrieved_job.errors}")
# except NotFound:
#     print(f"لم يتم العثور على الوظيفة {job_id_to_get}.")
# except Exception as e:
#     print(f"خطأ في استرداد الوظيفة: {e}")

استغلال واجهات برمجة التطبيقات المتخصصة (المفاهيم وحالات الاستخدام)

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

1. واجهة برمجة تطبيقات قراءة تخزين BigQuery (Python):

# يتطلب: pip install google-cloud-bigquery-storage pyarrow pandas db-dtypes

from google.cloud import bigquery_storage_v1
from google.cloud.bigquery_storage_v1 import types, GetDataStreamRequest

# --- باستخدام Pandas read_gbq (أبسط تكامل) ---
# هذا يستخدم تلقائيًا واجهة تخزين API إذا تم تثبيتها وكانت مفيدة
# table_id_read = "bigquery-public-data.usa_names.usa_1910_2013"
# cols_to_read = ["name", "number", "state"]
# row_filter = "state = 'CA' AND number > 5000"
#
# try:
#      df_storage = pd.read_gbq(
#          table_id_read,
#          project_id=client.project,
#          columns=cols_to_read,
#          row_filter=row_filter,
#          use_bqstorage_api=True, # طلب صريح لواجهة تخزين API
#          progress_bar_type='tqdm' # شريط تقدم اختياري
#      )
#      print("\nتم قراءة البيانات باستخدام API التخزين عبر pandas.read_gbq:")
#      print(df_storage.head())
#      print(f"تم قراءة {len(df_storage)} صفوف.")
# except Exception as e:
#      print(f"خطأ في قراءة البيانات باستخدام API التخزين عبر read_gbq: {e}")


# --- استخدام واجهة APIs التخزين يدويًا (المزيد من التحكم) ---
# bqstorageclient = bigquery_storage_v1.BigQueryReadClient()
# table = f"projects/{project_id}/datasets/{dataset_id}/tables/{table_name}" # استبدل بتفاصيل جدولك

# requested_session = types.ReadSession(
#     table=table,
#     data_format=types.DataFormat.ARROW,
#     read_options=types.ReadSession.TableReadOptions(
#         selected_fields=["col1", "col2"], # تحديد الأعمدة
#         row_restriction="col1 > 100"     # تحديد المرشح
#     ),
# )
# parent = f"projects/{project_id}"

# read_session = bqstorageclient.create_read_session(
#     parent=parent,
#     read_session=requested_session,
#     max_stream_count=1, # اطلب عدد التدفقات المتوازية
# )

# stream = read_session.streams[0]
# reader = bqstorageclient.read_rows(stream.name)
# frames = [message.arrow_record_batch for message in reader.messages()]
# if frames:
#     arrow_table = pa.Table.from_batches(frames)
#     df_manual = arrow_table.to_pandas()
#     print("\nتم قراءة البيانات يدويًا باستخدام API التخزين:")
#     print(df_manual.head())
# else:
#     print("لم يتم قراءة أي بيانات باستخدام API التخزين اليدوي.")

2. واجهة برمجة التطبيقات للاتصال BigQuery:

  1. استخدم واجهة برمجة التطبيقات (أو وحدة التحكم السحابية/bq tool) لإنشاء مورد Connection، مع تحديد نوع المصدر الخارجي والتفاصيل.
  2. امنح حساب الخدمة الخاص بالاتصال الأذونات المناسبة على المورد الخارجي (على سبيل المثال، دور مستخدم Cloud SQL).
  3. استخدم الدالة EXTERNAL_QUERY("connection_id", "external_sql_query") ضمن SQL الخاص بك في BigQuery.

3. واجهة برمجة التطبيقات للتحليلات Analytics Hub:

4. واجهة برمجة التطبيقات BigLake:

استخدام واجهة REST API مباشرة

على الرغم من أن مكتبات العملاء مفضلة عادةً، قد تحتاج إلى استخدام واجهة REST API مباشرةً إذا:

إجراء الطلبات:

ستستخدم عادةً عميل HTTP (مثل curl أو مكتبة requests الخاصة بـ Python). تحتاج إلى:

  1. الحصول على رمز وصول OAuth 2.0 (على سبيل المثال، باستخدام gcloud auth print-access-token).
  2. بناء عنوان URL الخاص بنقطة النهاية الصحيحة لواجهة برمجة التطبيقات.
  3. إنشاء جسم الطلب JSON وفقًا لمواصفات طريقة واجهة برمجة التطبيقات.
  4. تضمين رمز الوصول في رأس Authorization: Bearer <token>.
  5. التعامل مع استجابة HTTP (أكواد الحالة، تحليل JSON، رسائل الخطأ).

مثال: تشغيل استعلام عبر REST (jobs.query)

# 1. احصل على رمز الوصول
TOKEN=$(gcloud auth print-access-token)

# 2. تعريف معرّف المشروع وجسم الطلب
PROJECT_ID="your-project-id" # استبدل بمعرّف مشروعك
REQUEST_BODY=$(cat <<EOF
{
  "query": "SELECT name, SUM(number) as total_people FROM \`bigquery-public-data.usa_names.usa_1910_2013\` WHERE state = 'CA' GROUP BY name ORDER BY total_people DESC LIMIT 5;",
  "useLegacySql": false
}
EOF
)

# 3. إجراء مكالمة API باستخدام curl
curl -X POST \
  "https://bigquery.googleapis.com/bigquery/v2/projects/${PROJECT_ID}/jobs" \
  -H "Authorization: Bearer ${TOKEN}" \
  -H "Content-Type: application/json; charset=utf-8" \
  -d "${REQUEST_BODY}"

# ستحتوي الاستجابة على معلومات الوظيفة، بما في ذلك معرّف الوظيفة.
# ستحتاج بعد ذلك إلى إجراء مكالمات متعاقبة إلى jobs.getQueryResults
# باستخدام معرّف الوظيفة لاسترداد الصفوف البيانات الفعلية بمجرد اكتمال الوظيفة.

هذا المثال يبدأ فقط وظيفة الاستعلام. يتطلب استرداد النتائج مراقبة حالة الوظيفة ثم استدعاء نقطة النهاية jobs.getQueryResults. وهذا يبرز الخطوات الإضافية المتضمنة مقارنة بمكتبات العملاء.

أفضل الممارسات والنصائح

الخاتمة

تقدم واجهات برمجة التطبيقات BigQuery وسيلة قوية ومرنة للتفاعل برمجيًا مع مستودع بياناتك. سواء كنت بحاجة إلى أتمتة تحميل البيانات، أو تشغيل استعلامات تحليلية معقدة كجزء من تطبيق، أو دمج رؤى BigQuery في لوحات المعلومات، أو إدارة الموارد ديناميكيًا، توفر واجهات برمجة التطبيقات الأدوات اللازمة.

من خلال فهم الأنواع المختلفة من واجهات برمجة التطبيقات، وإعداد بيئتك بشكل صحيح، والاستفادة من便利 مكتبات العملاء (خصوصًا في Python)، يمكنك فتح الإمكانات الكاملة لـ BigQuery بخلاف وحدة التحكم التفاعلية. ابدأ بواجهة API الأساسية للمهام الشائعة، واستكشف واجهات برمجة التطبيقات المتخصصة مثل واجهة قراءة التخزين لأداء العمليات الحرجة، وتذكر أن واجهة REST API متاحة دائمًا للتحكم النهائي. بينما تبني التطبيقات على BigQuery، ستكون هذه الواجهات هي المكونات الأساسية لهندسة بياناتك.

ممارسة تصميم API في Apidog

اكتشف طريقة أسهل لبناء واستخدام واجهات برمجة التطبيقات