1. مقدمة

تاريخ آخر تعديل: 2020-02-28
يوضّح هذا الدرس التطبيقي حول الترميز نمطًا لنقل البيانات من أجل نقل بيانات الرعاية الصحية بتنسيق CSV إلى BigQuery في الوقت الفعلي. سنستخدم مسار بيانات الوقت الفعلي في Cloud Data Fusion لهذا التمرين العملي. تم إنشاء بيانات اختبار واقعية للرعاية الصحية وإتاحتها لك في حزمة Google Cloud Storage (gs://hcls_testing_data_fhir_10_patients/csv/).
في هذا الدرس العملي، ستتعرّف على ما يلي:
- كيفية نقل بيانات CSV (التحميل في الوقت الفعلي) من Pub/Sub إلى 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
تهيئة متغيرات shell لبيئتك
للعثور على 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
ثبِّت حزمة تطوير البرامج (SDK) من Google Cloud وابدأ إعدادها وأنشئ موضوعًا للاشتراك أو النشر والاشتراكات.
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"، اختَر ProjectID.
- اختَر "دمج البيانات" من القائمة اليمنى، ثمّ انقر على الزرّ "إنشاء مثيل" في منتصف الصفحة (الإنشاء الأول)، أو انقر على الزرّ "إنشاء مثيل" في القائمة العلوية (الإنشاء الإضافي).


- أدخِل اسم المثيل. اختَر المؤسسة.

- انقر على الزر CREATE.
إعداد أذونات الجهاز الظاهري
بعد إنشاء آلة افتراضية، اتّبِع الخطوات التالية لمنح حساب الخدمة المرتبط بالآلة الافتراضية أذونات في مشروعك:
- انتقِل إلى صفحة تفاصيل الجهاز الظاهري من خلال النقر على اسم الجهاز الظاهري.

- انسخ حساب الخدمة.

- انتقِل إلى صفحة "إدارة الهوية وإمكانية الوصول" في مشروعك.
- في صفحة أذونات "إدارة الهوية وإمكانية الوصول"، امنح حساب الخدمة دور وكيل خدمة Cloud Data Fusion API من خلال النقر على الزر إضافة. الصِق "حساب الخدمة" في حقل "أعضاء جدد" (New members) واختَر "إدارة الخدمة" (Service Management) -> دور "وكيل خادم واجهة برمجة التطبيقات Cloud Data Fusion" (Cloud Data Fusion API Server Agent role).

- انقر على + إضافة دور آخر (أو تعديل وكيل خدمة واجهة برمجة التطبيقات في Cloud Data Fusion) لإضافة دور "مشترك في Pub/Sub".

- انقر على حفظ.
بعد إكمال هذه الخطوات، يمكنك البدء في استخدام Cloud Data Fusion من خلال النقر على الرابط عرض المثيل في صفحة مثيلات Cloud Data Fusion أو صفحة تفاصيل أحد المثيلات.
إعداد قاعدة جدار الحماية:
- انتقِل إلى "وحدة تحكّم Google Cloud Platform" -> "شبكة السحابة الافتراضية الخاصة" -> "قواعد جدار الحماية" للتحقّق مما إذا كانت قاعدة default-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
باستخدام واجهة المستخدم: انقر على "إنشاء قاعدة جدار الحماية" (Create Firewall Rule) واملأ المعلومات:


4. إنشاء عُقد للمسار
بعد أن أصبح لدينا بيئة Cloud Data Fusion في GCP، لنبدأ بإنشاء مسارات البيانات في Cloud Data Fusion باتّباع الخطوات التالية:
- في نافذة Cloud Data Fusion، انقر على الرابط "عرض المثيل" في عمود "الإجراء". سيتم توجيهك إلى صفحة أخرى. انقر على عنوان URL المقدَّم لفتح مثيل Cloud Data Fusion. اختيارك النقر على الزر "بدء الجولة" أو "لا، شكرًا" في النافذة المنبثقة "مرحبًا"
- وسِّع قائمة "النقاط الثلاث"، ثم انقر على "خطوات التنفيذ" (Pipeline) -> "القائمة" (List).

- انقر على الزر الأخضر + في أعلى يسار الصفحة، ثم اختَر إنشاء مسار معالجة. يمكنك أيضًا النقر على "إنشاء" رابط مسار.


- بعد ظهور "استوديو خطوط نقل البيانات"، انقر على خط نقل البيانات - في الوقت الفعلي من القائمة المنسدلة في أعلى يمين الصفحة.

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

اختَر عقدة مصدر.
- ضمن قسم "المصدر" (Source) في لوحة "المكوّن الإضافي" (Plugin) على يمين الصفحة، انقر مرّتين على عقدة Google Cloud Pub/Sub التي تظهر في واجهة مستخدم "مسارات البيانات" (Data Pipelines).
- أشِر إلى عقدة مصدر PubSub وانقر على الخصائص.

- املأ الحقول المطلوبة. اضبط الحقول التالية:
- Label = {any text}
- الاسم المرجعي = {أي نص}
- رقم تعريف المشروع = رصد تلقائي
- الاشتراك = الاشتراك الذي تم إنشاؤه في قسم "إنشاء موضوع Pub/Sub" (على سبيل المثال، your-sub)
- الموضوع = الموضوع الذي تم إنشاؤه في قسم "إنشاء موضوع Pub/Sub" (على سبيل المثال، your-topic)
- انقر على المستندات للحصول على شرح مفصّل. انقر على الزر "التحقّق" للتحقّق من صحة جميع المعلومات المُدخَلة. يشير اللون الأخضر "لم يتم العثور على أي أخطاء" إلى النجاح.

- لإغلاق "خصائص Pub/Sub"، انقر على الزر X.
اختَر عُقدة التحويل.
- ضمن قسم "التحويل" (Transform) في لوحة "المكوّن الإضافي" (Plugin) على اليمين، انقر نقرًا مزدوجًا على عقدة الإسقاط (Projection) التي تظهر في واجهة مستخدم "خطوط نقل البيانات" (Data Pipelines). اربطوا عُقدة مصدر Pub/Sub بعُقدة تحويل Projection.
- أشِر إلى عقدة العرض وانقر على الخصائص.

- املأ الحقول المطلوبة. اضبط الحقول التالية:
- Convert = تحويل message من نوع بايت إلى نوع سلسلة
- الحقول التي سيتم تجاهلها = {أي حقل}
- الحقول المطلوب الاحتفاظ بها = {message وtimestamp وattributes} (على سبيل المثال، السمات: key='filename':value='patients' المُرسَلة من Pub/Sub)
- الحقول المطلوب إعادة تسميتها = {message, timestamp}
- انقر على المستندات للحصول على شرح مفصّل. انقر على الزر "التحقّق" للتحقّق من صحة جميع المعلومات المُدخَلة. يشير اللون الأخضر "لم يتم العثور على أي أخطاء" إلى النجاح.

- ضمن قسم "التحويل" (Transform) في لوحة "المكوّنات الإضافية" (Plugin) على يمين الصفحة، انقر نقرًا مزدوجًا على عقدة Wrangler التي تظهر في واجهة مستخدم "خطوط نقل البيانات" (Data Pipelines). وصِّل عقدة تحويل Projection بعقدة تحويل Wrangler. أشِر إلى عقدة Wrangler وانقر على الخصائص.

- انقر على القائمة المنسدلة الإجراءات واختَر استيراد لاستيراد مخطط محفوظ (على سبيل المثال: gs://hcls_testing_data_fhir_10_patients/csv_schemas/ schema (Patients).json).
- أضِف حقل TIMESTAMP في "مخطط الإخراج" (Output Schema) (إذا لم يكن متوفّرًا) من خلال النقر على الزر + بجانب الحقل الأخير، وضَع علامة في المربّع "قيمة فارغة" (Null).
- املأ الحقول المطلوبة. اضبط الحقول التالية:
- Label = {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 to BigQuery via CDF بشأن إخفاء هوية البيانات وإزالتها. أو أضِف مقتطف الرمز هذا mask-number SSN xxxxxxx#### في مربّع الوصفة
- لإغلاق نافذة "خصائص التحويل"، انقر على الزر X.
اختَر عقدة Sink.
- ضمن قسم "المستودع" (Sink) في لوحة "المكوّن الإضافي" (Plugin) على يمين الصفحة، انقر نقرًا مزدوجًا على عقدة BigQuery التي تظهر في واجهة مستخدم "مسار نقل البيانات" (Data Pipeline). اربط عقدة تحويل Wrangler بعقدة مخزَن BigQuery.
- أشِر إلى عقدة مخزَن BigQuery وانقر على "السمات".

- املأ الحقول المطلوبة:
- Label = {any text}
- الاسم المرجعي = {أي نص}
- رقم تعريف المشروع = رصد تلقائي
- مجموعة البيانات = مجموعة بيانات BigQuery المستخدَمة في المشروع الحالي (مثل DATASET_ID)
- الجدول = {اسم الجدول}
- انقر على المستندات للحصول على شرح مفصّل. انقر على الزر "التحقّق" للتحقّق من صحة جميع المعلومات المُدخَلة. يشير اللون الأخضر "لم يتم العثور على أي أخطاء" إلى النجاح.

- لإغلاق "خصائص BigQuery"، انقر على الزر X.
5- إنشاء مسار بيانات في الوقت الفعلي
في القسم السابق، أنشأنا العُقد المطلوبة لإنشاء مسار نقل بيانات في Cloud Data Fusion. في هذا القسم، نربط العُقد لإنشاء مسار البيانات الفعلي.
ربط جميع العُقد في مسار
- اسحب سهم اتصال > على الحافة اليسرى لعقدة المصدر وأفلِته على الحافة اليمنى لعقدة الوجهة.
- يمكن أن تتضمّن سلسلة المعالجة فروعًا متعدّدة تتلقّى رسائل منشورة من عقدة مصدر Pub/Sub نفسها.

- أدخِل اسمًا لخط أنابيب المعالجة.
انتهيت! لقد أنشأت للتو أول مسار بيانات في الوقت الفعلي سيتم نشره وتشغيله.
إرسال الرسائل من خلال Cloud Pub/Sub
باستخدام واجهة مستخدم Pub/Sub:
- انتقِل إلى وحدة تحكّم Google Cloud Platform -> النشر/الاشتراك -> المواضيع، واختَر your-topic، ثم انقر على "نشر رسالة" (PUBLISH MESSAGE) في القائمة العلوية.

- ضَع صف سجلّ واحدًا فقط في كل مرة في حقل "الرسالة". انقر على الزر +إضافة سمة. أدخِل المفتاح = اسم الملف، والقيمة = <نوع السجلّ> (على سبيل المثال، المرضى، ومقدّمو الرعاية الصحية، والحساسية، وما إلى ذلك).
- انقر على الزر "نشر" لإرسال الرسالة.
باستخدام الأمر gcloud:
- تقديم الرسالة يدويًا
gcloud pubsub topics publish <your-topic> --attribute <key>=<value> --message \ "paste one record row here"
- تقديم الرسالة بشكل شبه تلقائي باستخدام أوامر يونكس cat وsed يمكن تنفيذ هذا الأمر بشكل متكرّر باستخدام مَعلمات مختلفة.
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.

- احتفِظ بالإعدادات التلقائية في ضبط.
- انقر على معاينة لمعاينة البيانات**.** انقر على معاينة مرة أخرى للرجوع إلى النافذة السابقة. يمكنك أيضًا تشغيل خط الأنابيب في "وضع المعاينة" من خلال النقر على RUN.

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

- انقر على إيقاف لإيقاف تنفيذ البنية الأساسية لبرنامج سير العمل في أي وقت.
- يمكنك تكرار خطة التسويق عن طريق النقر على "تكرار" ضمن زر الإجراءات.
- يمكنك تصدير إعدادات مسار العرض عن طريق النقر على "تصدير" ضمن زر الإجراءات.

- انقر على الملخّص لعرض رسومات بيانية لسجلّ عمليات التشغيل والسجلات وسجلات الأخطاء والتحذيرات.
7. التحقق من صحة البيانات
في هذا القسم، نتحقّق من صحة تنفيذ مسار نقل البيانات.
- تأكَّد من تنفيذ خط أنابيب المعالجة بنجاح وتشغيله باستمرار.

- تأكَّد من تحميل جداول BigQuery بسجلات معدَّلة استنادًا إلى الطابع الزمني. في هذا المثال، تم نشر سجلّين أو رسالتَين خاصتَين بمريض وسجلّ أو رسالة واحدة خاصة بالحساسية في موضوع Pub/Sub بتاريخ 2019-06-25.
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-sub> تلقّى الرسائل المنشورة في <your-topic>.
gcloud pubsub subscriptions pull --auto-ack <your-sub>

عرض النتائج
لعرض النتائج بعد نشر الرسائل في موضوع Pub/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.