1. مقدمة
تاريخ آخر تعديل: 28/02/2020
يعرض هذا الدرس التطبيقي حول الترميز نمطًا لنقل البيانات لنقل بيانات الرعاية الصحية بتنسيق CSV إلى BigQuery في الوقت الفعلي. سنستخدم مسار البيانات في الوقت الفعلي Cloud Data fusion في هذا التمرين المعملي. تم إنشاء بيانات اختبار الرعاية الصحية الواقعية وإتاحتها لك في حزمة Google Cloud Storage (gs://hcls_testing_data_fhir_10_patients/csv/).
ستتعرف في هذا التمرين المعملي على الترميز ما يلي:
- كيفية نقل بيانات ملف CSV (التحميل في الوقت الفعلي) من النشر/الاشتراك إلى BigQuery باستخدام ميزة Cloud Data Fusion
- طريقة إنشاء مسار تكامل البيانات بشكل مرئي في Cloud Data Fusion لتحميل بيانات الرعاية الصحية وتحويلها وإخفاءها في الوقت الفعلي
ما هي متطلبات تشغيل هذا العرض التوضيحي؟
- تحتاج إلى إذن بالوصول إلى مشروع Google Cloud Platform.
- يجب أن يتم منحك دور "مالك" في مشروع Google Cloud Platform.
- بيانات الرعاية الصحية بتنسيق CSV، بما في ذلك العنوان.
إذا لم يكن لديك مشروع على Google Cloud Platform، اتّبِع هذه الخطوات لإنشاء مشروع Google Cloud Platform جديد.
تم مسبقًا تحميل بيانات الرعاية الصحية بتنسيق CSV في حزمة GCS على الرابط gs://hcls_testing_data_fhir_10_patients/csv/. لكل ملف موارد CSV بنية مخطط فريدة. على سبيل المثال، يحتوي Patients.csv على مخطط مختلف عن Providers.csv. ويمكن العثور على ملفات المخططات المحمَّلة مسبقًا على الرابط gs://hcls_testing_data_fhir_10_patients/csv_schemas.
إذا كنت بحاجة إلى مجموعة بيانات جديدة، يمكنك إنشاؤها دائمًا باستخدام SyntheaTM. بعد ذلك، يمكنك تحميلها إلى خدمة GCS بدلاً من نسخها من الحزمة في خطوة "نسخ بيانات الإدخال".
2. إعداد مشروع Google Cloud Platform
إعداد متغيرات الغلاف لبيئتك.
للعثور على PROJECT_ID، راجِع المقالة تحديد المشاريع.
<!-- CODELAB: Initialize shell variables -> <!-- Your current GCP Project ID -> export PROJECT_ID=<PROJECT_ID> <!-- A new GCS Bucket in your current Project - INPUT -> export BUCKET_NAME=<BUCKET_NAME> <!-- A new BQ Dataset ID - OUTPUT -> export DATASET_ID=<DATASET_ID>
أنشِئ حزمة GCS لتخزين بيانات الإدخال وسجلّات الأخطاء باستخدام أداة gsutil.
gsutil mb -l us gs://$BUCKET_NAME
الوصول إلى مجموعة البيانات الاصطناعية
- من عنوان البريد الإلكتروني الذي تستخدمه لتسجيل الدخول إلى Cloud Console، أرسِل رسالة إلكترونية إلى hcls-solutions-external+subscribe@google.com لطلب الانضمام.
- ستصلك رسالة إلكترونية تتضمّن تعليمات حول كيفية تأكيد الإجراء.
- يمكنك استخدام خيار الردّ على الرسالة الإلكترونية للانضمام إلى المجموعة. ولا تنقر على الزر .
- بعد تلقّي رسالة التأكيد الإلكترونية، يمكنك الانتقال إلى الخطوة التالية في الدرس التطبيقي حول الترميز.
نسخ بيانات الإدخال:
gsutil -m cp -r gs://hcls_testing_data_fhir_10_patients/csv gs://$BUCKET_NAME
أنشِئ مجموعة بيانات BigQuery.
bq mk --location=us --dataset $PROJECT_ID:$DATASET_ID
ثبِّت حزمة Google Cloud SDK واضبطها وأنشئ نشر أو موضوع فرعي واشتراكات.
gcloud init gcloud pubsub topics create your-topic gcloud pubsub subscriptions create --topic your-topic your-sub
3- إعداد بيئة Cloud Data Fusion
اتّبع هذه الخطوات لتفعيل Cloud Data Fusion API ومنح الأذونات المطلوبة:
تفعيل واجهات برمجة التطبيقات
- انتقِل إلى مكتبة واجهة برمجة التطبيقات لوحدة تحكُّم Google Cloud Platform.
- من قائمة المشاريع، اختَر مشروعك.
- في مكتبة واجهة برمجة التطبيقات، اختَر واجهة برمجة التطبيقات التي تريد تفعيلها ( واجهة برمجة التطبيقات Cloud Data Fusion API، وCloud Pub/Sub API). في حال احتجت إلى مساعدة في العثور على واجهة برمجة التطبيقات، استخدِم حقل البحث والفلاتر.
- في صفحة واجهة برمجة التطبيقات، انقر على تفعيل.
إنشاء مثيل Cloud Data Fusion
- في وحدة تحكُّم Google Cloud Platform، اختَر ProjectID.
- حدد "Data Fusion" (دمج البيانات) من القائمة اليمنى، ثم انقر فوق الزر "CREATE AN INSTANCE" في منتصف الصفحة (الإنشاء الأول)، أو انقر على الزر "إنشاء مثيل" في القائمة العلوية (إنشاء إضافي).
- أدخِل اسم المثيل. اختَر Enterprise.
- انقر فوق الزر "CREATE" (إنشاء).
إعداد أذونات المثيل
بعد إنشاء مثيل، اتّبِع الخطوات التالية لمنح حساب الخدمة المرتبط بأذونات المثيل في مشروعك:
- انتقِل إلى صفحة تفاصيل المثيل من خلال النقر على اسم المثيل.
- انسخ حساب الخدمة.
- انتقِل إلى صفحة "إدارة الهوية وإمكانية الوصول" في مشروعك.
- في صفحة أذونات "إدارة الهوية وإمكانية الوصول"، امنح حساب الخدمة دور وكيل خدمة Cloud Data Fusion API من خلال النقر على الزر إضافة. لصق "حساب الخدمة" في الحقل "الأعضاء الجدد" واختيار "إدارة الخدمة" -> دور وكيل خادم واجهة برمجة التطبيقات Data Fusion API
- انقر على + إضافة دور آخر (أو Edit Cloud Data Fusion API Service Agent) لإضافة دور "المشترِك/المشترِك".
- انقر على حفظ.
بعد تنفيذ هذه الخطوات، يمكنك البدء في استخدام Cloud Data Fusion من خلال النقر على الرابط عرض المثيل على صفحة مثيلات Cloud Data Fusion، أو صفحة تفاصيل المثيل.
إعداد قاعدة جدار الحماية.
- انتقِل إلى وحدة تحكُّم Google Cloud Platform -> شبكة VPC -> قواعد جدار الحماية للتحقُّق مما إذا كانت قاعدة "allow-ssh" التلقائية متوفّرة أم لا.
- وإذا لم يكن كذلك، أضِف قاعدة جدار حماية تسمح لجميع حركة بيانات SSH الواردة إلى الشبكة التلقائية.
باستخدام سطر الأوامر:
gcloud beta compute --project={PROJECT_ID} firewall-rules create default-allow-ssh --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:22 --source-ranges=0.0.0.0/0 --enable-logging
استخدام واجهة المستخدم: انقر على إنشاء قاعدة جدار حماية واملأ المعلومات:
4. إنشاء عُقد لمسار التعلّم
الآن بعد أن أصبح لدينا بيئة Cloud Data Fusion في Google Cloud Platform، لنبدأ في إنشاء مسارات البيانات في Cloud Data Fusion من خلال الخطوات التالية:
- في نافذة Cloud Data Fusion، انقر على الرابط "عرض المثيل" في عمود "الإجراء". ستتم إعادة توجيهك إلى صفحة أخرى. انقر على url المقدَّم لفتح مثيل Cloud Data Fusion. اختيارك النقر على "بدء الجولة" أو "لا، شكرًا" في النافذة المنبثقة للترحيب.
- توسيع نطاق "الهامبرغر" القائمة، حدد Pipeline -> قائمة
- انقر على الزر + الأخضر في أعلى يسار الصفحة، ثم اختَر إنشاء مسار. أو انقر على "إنشاء" رابط مسار التعلّم.
- بعد ظهور استوديو مسار التعلّم، في أعلى يمين الصفحة، اختَر مسار البيانات - الوقت الفعلي من القائمة المنسدلة.
- في واجهة مستخدم مسارات البيانات، ستظهر لك أقسام مختلفة في اللوحة اليمنى كالفلتر، والمصدر، وتحويل، والتحليلات، والمستودع، ومعالِجات الأخطاء، والتنبيهات، حيث يمكنك تحديد عُقدة أو عُقد لمسار العملية.
اختَر عقدة مصدر.
- ضمن قسم "المصدر" في لوحة المكونات الإضافية على اليمين، انقر مرّتين على عقدة Google Cloud PubSub التي تظهر في واجهة مستخدم "مسارات البيانات".
- أشِر إلى عقدة مصدر PubSub وانقر على الخصائص.
- املأ الحقول المطلوبة. اضبط الحقول التالية:
- التصنيف = {any text}
- اسم المرجع = {any text}
- رقم تعريف المشروع = الاكتشاف التلقائي
- الاشتراك = يشير إلى اشتراك تم إنشاؤه في القسم "إنشاء موضوع/نشر" (مثلاً، your-sub)
- الموضوع = الموضوع الذي تم إنشاؤه في القسم "إنشاء نشر/موضوع فرعي" (مثلاً، موضوعك)
- انقر على المستندات للحصول على شرح تفصيلي. انقر على الزر "التحقّق من الصحة" للتحقّق من صحة جميع معلومات الإدخال. أخضر "لم يتم العثور على أخطاء" يشير إلى النجاح.
- لإغلاق مواقع النشر/الاشتراك، انقر على الزر X.
اختَر عقدة التحويل.
- ضمن قسم "التحويل" في لوحة المكونات الإضافية على اليمين، انقر نقرًا مزدوجًا على عقدة الإسقاط، التي تظهر في واجهة مستخدم "مسارات البيانات". ربط عقدة مصدر Pub/Sub بعقدة تحويل الإسقاط.
- أشِر إلى عقدة Projection (الإسقاط) وانقر على Properties (الخصائص).
- املأ الحقول المطلوبة. اضبط الحقول التالية:
- التحويل = تحويل الرسالة من نوع البايت إلى نوع السلسلة.
- الحقول المطلوب إفلاتها = {any field}
- الحقول المطلوب الاحتفاظ بها = {message وtimestamp وattributes} (على سبيل المثال، السمات: key=‘filename':value=‘patients' مرسَلة من Pub/Sub)
- الحقول المطلوب إعادة تسميتها = {message، الطابع الزمني}
- انقر على المستندات للحصول على شرح تفصيلي. انقر على الزر "التحقّق من الصحة" للتحقّق من صحة جميع معلومات الإدخال. أخضر "لم يتم العثور على أخطاء" يشير إلى النجاح.
- ضمن قسم "التحويل" في لوحة المكونات الإضافية على اليمين، انقر نقرًا مزدوجًا على عقدة Wrangler التي تظهر في واجهة مستخدم "مسارات البيانات". ربط عقدة تحويل الإسقاط بعقدة تحويل Wrangler. أشِر إلى عقدة Wrangler، وانقر على الخصائص.
- انقر على القائمة المنسدلة الإجراءات واختَر استيراد لاستيراد مخطط محفوظ (على سبيل المثال: gs://hcls_testing_data_fhir_10_patients/csv_schemas/ schema (Patients).json).
- أضف الحقل TIMESTAMP في مخطط الإخراج (إذا لم يكن موجودًا) عن طريق النقر على الزر + بجوار الحقل الأخير وحدد "Null" (فارغ) .
- املأ الحقول المطلوبة. اضبط الحقول التالية:
- التصنيف = {any text}
- اسم حقل الإدخال = {*}
- Precondition = {attributes.get("filename") != "patients"} لتمييز كل نوع من أنواع السجلات أو الرسائل (مثل المرضى ومقدّمي الخدمات وأمراض الحساسية، وما إلى ذلك) المُرسَلة من عقدة مصدر PubSub.
- انقر على المستندات للحصول على شرح تفصيلي. انقر على الزر "التحقّق من الصحة" للتحقّق من صحة جميع معلومات الإدخال. أخضر "لم يتم العثور على أخطاء" يشير إلى النجاح.
- اضبط أسماء الأعمدة بترتيب مفضّل، وأفلت الحقول التي لا تحتاج إليها. انسخ مقتطف الرمز التالي والصقه في مربّع الوصفة.
drop attributes parse-as-csv :body ',' false drop body set columns TIMESTAMP,Id,BIRTHDATE,DEATHDATE,SSN,DRIVERS,PASSPORT,PREFIX,FIRST,LAST,SUFFIX,MAIDEN,MARITAL,RACE,ETHNICITY,GENDER,BIRTHPLACE,ADDRESS,CITY,STATE,ZIP mask-number SSN xxxxxxx####
- يمكنك الرجوع إلى Batch-Codelab - CSV إلى BigQuery عبر CDF لإخفاء البيانات وإزالة تحديد الهوية فيها. أو أضِف مقتطف الرمز هذا mask-number SSN xxxxxxx#### في مربّع "وصفة"
- لإغلاق نافذة "تحويل الخصائص"، انقر على زر X.
اختَر عقدة الحوض.
- ضمن قسم الحوض في لوحة المكونات الإضافية على اليمين، انقر نقرًا مزدوجًا على عقدة BigQuery، التي تظهر في واجهة مستخدم مسار البيانات. ربط عقدة تحويل Wrangler بعقدة مستودع BigQuery.
- أشِر إلى عقدة مستودع BigQuery وانقر على "Properties" (الخصائص).
- املأ الحقول المطلوبة:
- التصنيف = {any text}
- اسم المرجع = {any text}
- رقم تعريف المشروع = الاكتشاف التلقائي
- مجموعة البيانات = مجموعة بيانات BigQuery المستخدَمة في المشروع الحالي (على سبيل المثال، DATASET_ID)
- الجدول = {table name}
- انقر على المستندات للحصول على شرح تفصيلي. انقر على الزر "التحقّق من الصحة" للتحقّق من صحة جميع معلومات الإدخال. أخضر "لم يتم العثور على أخطاء" يشير إلى النجاح.
- لإغلاق خصائص BigQuery، انقر على الزر X.
5- إنشاء مسار البيانات في الوقت الفعلي
في القسم السابق، أنشأنا عُقدًا مطلوبة لإنشاء مسار بيانات في Cloud Data Fusion. في هذا القسم، نربط العُقد لإنشاء المسار الفعلي.
ربط جميع العُقد في مسار معيّن
- اسحب سهم الاتصال > على الحافة اليمنى للعقدة المصدر وإفلاتها على الحافة اليسرى للعقدة الوجهة.
- يمكن أن يحتوي المسار على عدة فروع تتلقى الرسائل المنشورة من عقدة مصدر PubSub نفسها.
- قم بتسمية مسار الممر.
ما مِن إجراءات أخرى مطلوبة. لقد أنشأت للتو أول مسار للبيانات في الوقت الفعلي ليتم نشره وتشغيله.
إرسال الرسائل من خلال Cloud Pub/Sub
باستخدام واجهة مستخدم النشر/الاشتراك:
- انتقِل إلى وحدة تحكُّم Google Cloud Platform -> نشر/اشتراك -> المواضيع، واختَر موضوعك، ثم انقر على "نشر الرسالة" في القائمة في أعلى الصفحة.
- ضَع صف سجلّ واحدًا فقط في كل مرة في حقل "الرسالة". انقر على زر +إضافة سمة. أدخِل المفتاح = filename، القيمة = <type of record>. (على سبيل المثال، المرضى ومقدّمو الخدمات وأمراض الحساسية وما إلى ذلك).
- انقر على الزر "نشر" لإرسال الرسالة.
باستخدام الأمر gcloud:
- تقديم الرسالة يدويًا
gcloud pubsub topics publish <your-topic> --attribute <key>=<value> --message \ "paste one record row here"
- يتم تقديم الرسالة بشكل شبه تلقائي باستخدام أمرَي cat وsed Unix. يمكن تنفيذ هذا الأمر بشكل متكرر باستخدام معلَمات مختلفة.
gcloud pubsub topics publish <your-topic> --attribute <key>=<value> --message \ "$(gsutil cat gs://$BUCKET_NAME/csv/<value>.csv | sed -n '#p')"
6- ضبط مسار التعلّم ونشره وتشغيله
الآن وبعد أن طوّرنا مسار البيانات، يمكننا نشره وتشغيله في Cloud Data Fusion.
- احرِص على الاحتفاظ بالإعدادات التلقائية لضبط.
- انقر على معاينة لمعاينة البيانات**.** انقر على **معاينة** مرة أخرى للرجوع إلى النافذة السابقة. يمكنك أيضًا تنفيذ العملية في وضع "المعاينة" من خلال النقر على **تشغيل**.
- انقر على السجلات للاطّلاع على السجلّات.
- انقر على حفظ لحفظ جميع التغييرات.
- انقر على استيراد لاستيراد إعداد المسار المحفوظ عند إنشاء مسار جديد.
- انقر على تصدير لتصدير إعداد المسار.
- انقر على نشر لتفعيل العملية.
- بعد نشر التطبيق، انقر على تشغيل وانتظر حتى اكتمال العملية.
- انقر على إيقاف لإيقاف مسار التعلّم في أي وقت.
- يمكنك تكرار المسار من خلال اختيار "نسخة طبق الأصل" ضمن الزر الإجراءات.
- يمكنك تصدير تهيئة المسار عن طريق اختيار "تصدير" ضمن زر الإجراءات.
- انقر على الملخّص لعرض الرسوم البيانية لسجلّ التشغيل والسجلّات وسجلّات الأخطاء والتحذيرات.
7. التحقّق من الصحة
في هذا القسم، نتحقق من صحة تنفيذ مسار البيانات.
- تأكَّد من تنفيذ مسار العملية بنجاح وأنّه يعمل بشكلٍ مستمر.
- تحقَّق من تحميل جداول BigQuery بسجلّات معدّلة استنادًا إلى TIMESTAMP. في هذا المثال، تم نشر سجلَّين أو رسالتَين للمريض وسجلّ أو رسالة واحدة للحساسية في موضوع Pub/Sub في 25 حزيران (يونيو) 2019.
bq query --nouse_legacy_sql 'select (select count(*) from \ '$PROJECT_ID.$DATASET_ID.Patients' where TIMESTAMP > "2019-06-25 \ 01:29:00.0000 UTC" ) as Patients, (select count(*) from \ '$PROJECT_ID.$DATASET_ID.Allergies' where TIMESTAMP > "2019-06-25 \ 01:29:00.0000 UTC") as Allergies;'
Waiting on bqjob_r14c8b94c1c0fe06a_0000016b960df4e1_1 ... (0s) Current status: DONE
+----------+-----------+
| Patients | Allergies |
+----------+-----------+
| 2 | 1 |
+----------+-----------+
- تحقَّق من أنّ الرسائل المنشورة على <your-topic> تم استلامها من قِبل <your-sub> مشترِك.
gcloud pubsub subscriptions pull --auto-ack <your-sub>
عرض النتائج
لعرض النتائج بعد نشر الرسائل في موضوع النشر/الاشتراك أثناء تشغيل مسار "الوقت الفعلي":
- إجراء طلب بحث عن الجدول في واجهة مستخدم BigQuery. الانتقال إلى واجهة مستخدم BIGQUERY
- قم بتحديث الاستعلام أدناه إلى اسم مشروعك ومجموعة البيانات والجدول الخاص بك.
8. التنظيف
لتجنُّب تحمُّل الرسوم المفروضة على حسابك في Google Cloud Platform مقابل الموارد المستخدَمة في هذا البرنامج التعليمي:
بعد الانتهاء من البرنامج التعليمي، يمكنك إخلاء الموارد التي أنشأتها على Google Cloud Platform حتى لا تشغل حصة ولن يتم تحصيل رسوم منك في المستقبل. توضّح الأقسام التالية كيفية حذف هذه المراجع أو إيقافها.
حذف مجموعة بيانات BigQuery
اتبع هذه التعليمات لحذف مجموعة بيانات BigQuery التي أنشأتها كجزء من هذا البرنامج التعليمي.
حذف حزمة GCS
اتّبِع التعليمات التالية لحذف حزمة GCS التي أنشأتها كجزء من هذا الدليل التوجيهي.
حذف مثيل Cloud Data Fusion
اتَّبِع هذه التعليمات لحذف النسخة الافتراضية من Cloud Data Fusion.
حذف المشروع
أسهل طريقة لإزالة الفوترة هي حذف المشروع الذي أنشأته للبرنامج التعليمي.
لحذف المشروع:
- في وحدة تحكُّم Google Cloud Platform، انتقِل إلى صفحة المشاريع. الانتقال إلى صفحة "المشاريع"
- في قائمة المشاريع، اختَر المشروع الذي تريد حذفه وانقر على حذف.
- في مربّع الحوار، اكتب رقم تعريف المشروع، ثم انقر على إيقاف التشغيل لحذف المشروع.
9. تهانينا
تهانينا، لقد أكملت بنجاح التمرين المعملي حول الترميز لنقل بيانات الرعاية الصحية في BigQuery باستخدام Cloud Data Fusion.
لقد نشرت بيانات ملف CSV في موضوع Pub/Sub، ثم حمَّلتها في BigQuery.
لقد قمت بصريًا بإنشاء مسار دمج البيانات لتحميل بيانات الرعاية الصحية وتحويلها وإخفاءها في الوقت الفعلي.
أنت الآن على علم بالخطوات الأساسية المطلوبة لبدء عملية تحليل بيانات الرعاية الصحية باستخدام BigQuery على Google Cloud Platform.