۱. مقدمه

آخرین بهروزرسانی: 2020-02-28
این آزمایشگاه کد، الگوی دریافت داده را برای دریافت دادههای مراقبتهای بهداشتی با فرمت CSV به صورت انبوه در BigQuery نشان میدهد. ما برای این آزمایشگاه از خط لوله داده ترکیبی ابری (Cloud Data fusion Batch Data pipeline) استفاده خواهیم کرد. دادههای آزمایشی مراقبتهای بهداشتی واقعگرایانه تولید شده و در سطل ذخیرهسازی ابری گوگل ( gs://hcls_testing_data_fhir_10_patients/csv/ ) برای شما در دسترس قرار گرفته است.
در این آزمایشگاه کد شما یاد خواهید گرفت:
- نحوه دریافت دادههای CSV (بارگذاری دستهای زمانبندیشده) از GCS به BigQuery با استفاده از Cloud Data Fusion .
- نحوه ساخت بصری یک خط لوله ادغام دادهها در Cloud Data Fusion برای بارگیری، تبدیل و پوشش دادههای مراقبتهای بهداشتی به صورت انبوه .
برای اجرای این codelab به چه چیزهایی نیاز دارید؟
- شما نیاز به دسترسی به یک پروژه GCP دارید.
- شما باید نقش مالک (Owner) را برای پروژه GCP داشته باشید.
- دادههای مراقبتهای بهداشتی در قالب CSV، شامل سربرگ.
اگر پروژه GCP ندارید، برای ایجاد یک پروژه GCP جدید، این مراحل را دنبال کنید.
دادههای مراقبتهای بهداشتی در قالب CSV از قبل در باکت GCS در آدرس gs://hcls_testing_data_fhir_10_patients/csv/ بارگذاری شدهاند. هر فایل CSV منبع، ساختار طرحواره منحصر به فرد خود را دارد. به عنوان مثال، Patients.csv طرحواره متفاوتی نسبت به Providers.csv دارد. فایلهای طرحواره از پیش بارگذاری شده را میتوانید در آدرس gs://hcls_testing_data_fhir_10_patients/csv_schemas بیابید.
اگر به یک مجموعه داده جدید نیاز دارید، همیشه میتوانید آن را با استفاده از Synthea™ تولید کنید. سپس، به جای کپی کردن آن از سطل در مرحله کپی کردن دادههای ورودی، آن را در GCS آپلود کنید.
۲. راهاندازی پروژه GCP
متغیرهای پوسته را برای محیط خود مقداردهی اولیه کنید.
برای یافتن 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>
با استفاده از ابزار gsutil، یک سطل GCS برای ذخیره دادههای ورودی و گزارشهای خطا ایجاد کنید .
gsutil mb -l us gs://$BUCKET_NAME
به مجموعه دادههای مصنوعی دسترسی پیدا کنید.
- از آدرس ایمیلی که برای ورود به Cloud Console استفاده میکنید، یک ایمیل به hcls-solutions-external+subscribe@google.com ارسال کنید و درخواست عضویت دهید.
- شما یک ایمیل با دستورالعملهایی در مورد نحوه تأیید اقدام دریافت خواهید کرد.

- برای عضویت در گروه، از گزینه پاسخ به ایمیل استفاده کنید. روی دکمه کلیک نکنید.
- پس از دریافت ایمیل تأیید، میتوانید به مرحله بعدی در codelab بروید.
کپی کردن دادههای ورودی
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
۳. تنظیمات محیط ادغام دادههای ابری
برای فعال کردن API ادغام دادههای ابری و اعطای مجوزهای لازم، این مراحل را دنبال کنید:
فعال کردن API ها
- به کتابخانه API کنسول GCP بروید.
- از لیست پروژهها، پروژه خود را انتخاب کنید.
- در کتابخانه API، API مورد نظر برای فعالسازی را انتخاب کنید. اگر برای یافتن API به کمک نیاز دارید، از فیلد جستجو و/یا فیلترها استفاده کنید.
- در صفحه API، روی فعال کردن (ENABLE) کلیک کنید.
یک نمونه Cloud Data Fusion ایجاد کنید .
- در کنسول GCP، ProjectID خود را انتخاب کنید.
- از منوی سمت چپ، Data Fusion را انتخاب کنید، سپس روی دکمه CREATE AN INSTANCE در وسط صفحه (اولین ایجاد) کلیک کنید، یا روی دکمه CREATE INSTANCE در منوی بالا (ایجاد اضافی) کلیک کنید.


- نام نمونه را وارد کنید. Enterprise را انتخاب کنید.

- روی دکمهی CREATE کلیک کنید.
مجوزهای نمونه را تنظیم کنید.
پس از ایجاد یک نمونه، از مراحل زیر برای اعطای مجوزهای مربوط به حساب سرویس در پروژه خود استفاده کنید:
- با کلیک روی نام نمونه، به صفحه جزئیات نمونه بروید.

- حساب سرویس را کپی کنید.

- به صفحه IAM پروژه خود بروید.
- در صفحه مجوزهای IAM، اکنون حساب سرویس را به عنوان یک عضو جدید اضافه میکنیم و نقش Cloud Data Fusion API Service Agent را به آن اعطا میکنیم. روی دکمه Add کلیک کنید، سپس "حساب سرویس" را در فیلد New members جایگذاری کنید و Service Management -> Cloud Data Fusion API Server Agent role را انتخاب کنید.

- روی ذخیره کلیک کنید.
پس از انجام این مراحل، میتوانید با کلیک روی پیوند مشاهده نمونه در صفحه نمونههای Cloud Data Fusion یا صفحه جزئیات یک نمونه، استفاده از Cloud Data Fusion را شروع کنید.
قانون فایروال را تنظیم کنید.
- برای بررسی وجود یا عدم وجود قانون default-allow-ssh، به کنسول GCP -> شبکه VPC -> قوانین فایروال بروید.

- اگر اینطور نیست، یک قانون فایروال اضافه کنید که به همه ترافیک 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
استفاده از رابط کاربری: روی ایجاد قانون فایروال کلیک کنید و اطلاعات را پر کنید:


۴. یک طرحواره برای تحول بسازید
حالا که محیط Cloud Fusion را در GCP داریم، بیایید یک طرحواره بسازیم. ما برای تبدیل دادههای CSV به این طرحواره نیاز داریم.
- در پنجره Cloud Data Fusion، روی لینک View Instance در ستون Action کلیک کنید. به صفحه دیگری هدایت خواهید شد. برای باز کردن نمونه Cloud Data Fusion، روی آدرس اینترنتی ارائه شده کلیک کنید. در پنجره خوشامدگویی، میتوانید روی دکمه "شروع تور" یا "خیر، متشکرم" کلیک کنید.
- منوی «همبرگر» را باز کنید، Pipeline -> Studio را انتخاب کنید.

- در بخش Transform در پالت Plugin در سمت چپ، روی گره Wrangler دوبار کلیک کنید، که در رابط کاربری Data Pipelines ظاهر میشود.

- به گره Wrangler اشاره کنید و روی Properties کلیک کنید. روی دکمه Wrangle کلیک کنید، سپس یک فایل منبع .csv (برای مثال، patients.csv) انتخاب کنید، که باید تمام فیلدهای داده را برای ساخت طرحواره مورد نظر داشته باشد.
- روی فلش رو به پایین (Column Transformations) کنار نام هر ستون (مثلاً body) کلیک کنید.

- به طور پیشفرض، وارد کردن اولیه فرض میکند که فقط یک ستون در فایل داده شما وجود دارد. برای تجزیه آن به عنوان CSV، Parse → CSV را انتخاب کنید، سپس جداکننده را انتخاب کرده و کادر "Set first row as header" را در صورت لزوم علامت بزنید. روی دکمه Apply کلیک کنید.
- روی فلش رو به پایین کنار فیلد بدنه کلیک کنید، گزینه حذف ستون (Delete Column) را برای حذف فیلد بدنه انتخاب کنید. علاوه بر این، میتوانید تبدیلهای دیگری مانند حذف ستونها، تغییر نوع داده برای برخی ستونها (پیشفرض نوع "رشته" است)، تقسیم ستونها، تنظیم نام ستونها و غیره را امتحان کنید.

- زبانههای «ستونها» و «مراحل تبدیل» طرحواره خروجی و دستور غذای Wrangler را نشان میدهند. روی «اعمال» در گوشه بالا سمت راست کلیک کنید. روی دکمه اعتبارسنجی کلیک کنید. علامت سبز «هیچ خطایی یافت نشد» نشان دهنده موفقیت است.

- در Wrangler Properties، روی منوی کشویی Actions کلیک کنید تا طرحواره مورد نظر را در حافظه محلی خود صادر کنید تا در صورت نیاز در آینده بتوانید آن را وارد کنید .
- دستور پخت رنگلر را برای استفادههای بعدی ذخیره کنید.
parse-as-csv :body ',' true drop body
- برای بستن پنجرهی Wrangler Properties، روی دکمهی X کلیک کنید.
۵. گرههایی برای خط لوله بسازید
در این بخش اجزای خط لوله را خواهیم ساخت.
- در رابط کاربری Data Pipelines، در بالا سمت چپ، باید ببینید که Data Pipeline - Batch به عنوان نوع خط لوله انتخاب شده است.

- بخشهای مختلفی در پنل سمت چپ مانند فیلتر، منبع، تبدیل، تجزیه و تحلیل، چاهک، شرایط و اقدامات، کنترلکنندههای خطا و هشدارها وجود دارد که میتوانید یک یا چند گره را برای خط لوله انتخاب کنید.

گره منبع
- گره منبع (Source) را انتخاب کنید.
- در قسمت Source در پنل Plugin در سمت چپ، روی گره Google Cloud Storage که در رابط کاربری Data Pipelines ظاهر میشود، دوبار کلیک کنید.
- به گره منبع GCS اشاره کنید و روی Properties کلیک کنید.

- فیلدهای مورد نیاز را پر کنید. فیلدهای زیر را تنظیم کنید:
- برچسب = {هر متنی}
- نام مرجع = {هر متنی}
- شناسه پروژه = تشخیص خودکار
- مسیر = آدرس اینترنتی GCS برای باکت در پروژه فعلی شما. برای مثال، gs://$BUCKET_NAME/csv/
- قالب = متن
- فیلد مسیر = نام فایل
- فقط نام فایل مسیر = درست
- خواندن فایلها به صورت بازگشتی = true
- با کلیک روی دکمه +، فیلد «filename» را به GCS Output Schema اضافه کنید.
- برای توضیحات بیشتر روی مستندات کلیک کنید. روی دکمه اعتبارسنجی کلیک کنید. علامت سبز رنگ "هیچ خطایی یافت نشد" نشان دهنده موفقیت است.
- برای بستن پنجرهی GCS Properties، روی دکمهی X کلیک کنید.
گره تبدیل
- گره Transform را انتخاب کنید.
- در قسمت Transform در پالت Plugin در سمت چپ، روی گره Wrangler که در رابط کاربری Data Pipelines ظاهر میشود، دوبار کلیک کنید. گره منبع GCS را به گره تبدیل Wrangler متصل کنید.
- به گره Wrangler اشاره کنید و روی Properties کلیک کنید.
- روی منوی کشویی Actions کلیک کنید و Import را انتخاب کنید تا یک طرحواره ذخیره شده (برای مثال: gs://hcls_testing_data_fhir_10_patients/csv_schemas/ schema (Patients).json ) را وارد کنید و دستور العمل ذخیره شده از بخش قبل را جایگذاری کنید .
- یا، از گره Wrangler از بخش « ساخت یک طرحواره برای تبدیل» دوباره استفاده کنید.
- فیلدهای مورد نیاز را پر کنید. فیلدهای زیر را تنظیم کنید:
- برچسب = {هر متنی}
- نام فیلد ورودی = {*}
- پیششرط = {filename != "patients.csv"} برای تمایز هر فایل ورودی ( برای مثال، patients.csv، providers.csv، allergens.csv و غیره ) از گره منبع.

- یک گره جاوا اسکریپت اضافه کنید تا جاوا اسکریپت ارائه شده توسط کاربر را اجرا کند که رکوردها را بیشتر تبدیل میکند. در این آزمایشگاه کد، ما از گره جاوا اسکریپت برای دریافت یک مهر زمانی برای هر بهروزرسانی رکورد استفاده میکنیم. گره تبدیل Wrangler را به گره تبدیل جاوا اسکریپت متصل کنید. ویژگیهای جاوا اسکریپت را باز کنید و تابع زیر را اضافه کنید:

function transform(input, emitter, context) {
input.TIMESTAMP = (new Date()).getTime()*1000;
emitter.emit(input);
}
- فیلدی با نام TIMESTAMP را با کلیک روی علامت + به طرحواره خروجی (در صورت عدم وجود) اضافه کنید. نوع داده را timestamp انتخاب کنید.

- برای توضیحات بیشتر روی مستندات کلیک کنید. برای تأیید تمام اطلاعات ورودی، روی دکمه اعتبارسنجی کلیک کنید. رنگ سبز "هیچ خطایی یافت نشد" نشان دهنده موفقیت است.
- برای بستن پنجره Transform Properties، روی دکمه X کلیک کنید.
پنهانسازی دادهها و عدم شناسایی
- شما میتوانید ستونهای دادهای جداگانه را با کلیک روی فلش رو به پایین در ستون و اعمال قوانین پوشش در زیر انتخاب دادههای ماسک مطابق با نیازهای خود (به عنوان مثال، ستون SSN) انتخاب کنید.

- شما میتوانید دستورالعملهای بیشتری را در پنجره دستور پخت گره Wrangler اضافه کنید. برای مثال، استفاده از دستورالعمل هش با الگوریتم هشینگ زیر برای اهداف شناسایی:
hash <column> <algorithm> <encode> <column>: name of the column <algorithm>: Hashing algorithm (i.e. MD5, SHA-1, etc.) <encode>: default is true (hashed digest is encoded as hex with left-padding zeros). To disable hex encoding, set <encode> to false.

گره سینک
- گره سینک را انتخاب کنید.
- در قسمت Sink در پنل Plugin در سمت چپ، روی گره BigQuery دوبار کلیک کنید، که در رابط کاربری Data Pipeline ظاهر میشود.
- به گره سینک BigQuery اشاره کنید و روی Properties کلیک کنید.

- فیلدهای مورد نیاز را پر کنید. فیلدهای زیر را تنظیم کنید:
- برچسب = {هر متنی}
- نام مرجع = {هر متنی}
- شناسه پروژه = تشخیص خودکار
- مجموعه داده = مجموعه داده BigQuery که در پروژه فعلی استفاده شده است (یعنی DATASET_ID)
- جدول = {نام جدول}
- برای توضیحات بیشتر روی مستندات کلیک کنید. برای تأیید تمام اطلاعات ورودی، روی دکمه اعتبارسنجی کلیک کنید. رنگ سبز "هیچ خطایی یافت نشد" نشان دهنده موفقیت است.

- برای بستن BigQuery Properties، روی دکمه X کلیک کنید.
۶. ساخت خط لوله داده دستهای
اتصال همه گرهها در یک خط لوله
- یک فلش اتصال > را در لبه سمت راست گره منبع بکشید و در لبه سمت چپ گره مقصد رها کنید.
- یک خط لوله میتواند چندین شاخه داشته باشد که فایلهای ورودی را از یک گره منبع GCS دریافت میکنند.

- خط لوله را نام ببرید.
همین. شما اولین خط لوله داده دستهای خود را ایجاد کردهاید و میتوانید خط لوله را مستقر و اجرا کنید.
ارسال هشدارهای خط لوله از طریق ایمیل (اختیاری)
برای استفاده از ویژگی Pipeline Alert SendEmail، پیکربندی نیاز به راهاندازی یک سرور ایمیل برای ارسال ایمیل از یک نمونه ماشین مجازی دارد. برای اطلاعات بیشتر به لینک مرجع زیر مراجعه کنید:
ارسال ایمیل از یک نمونه | مستندات موتور محاسبه
در این آزمایشگاه کد، ما با استفاده از مراحل زیر، یک سرویس رله ایمیل را از طریق Mailgun راهاندازی میکنیم:
- برای ایجاد حساب کاربری با Mailgun و پیکربندی سرویس رله ایمیل، دستورالعملهای موجود در بخش ارسال ایمیل با Mailgun | مستندات موتور محاسبات را دنبال کنید. تغییرات اضافی در زیر آمده است.
- آدرسهای ایمیل همه گیرندگان را به لیست مجاز Mailgun اضافه کنید. این لیست را میتوانید در گزینه Mailgun>Sending>Overview در پنل سمت چپ پیدا کنید.


به محض اینکه گیرندگان روی دکمه «موافقم» در ایمیل ارسال شده از support@mailgun.net کلیک کنند، آدرسهای ایمیل آنها در لیست مجاز برای دریافت ایمیلهای هشدار خط لوله ذخیره میشوند.

- مرحله ۳ از بخش «قبل از شروع» - یک قانون فایروال به شرح زیر ایجاد کنید:

- مرحله ۳ از «پیکربندی Mailgun به عنوان رله ایمیل با Postfix». همانطور که در دستورالعملها ذکر شده است، به جای Local Only ، گزینه Internet Site یا Internet with smarthost را انتخاب کنید.

- مرحله ۴ از «پیکربندی Mailgun به عنوان رله ایمیل با Postfix». فایل vi /etc/postfix/main.cf را ویرایش کنید تا 10.128.0.0/9 را به انتهای mynetworks اضافه کنید.

- برای تغییر پورت پیشفرض smtp (25) به 587، فایل vi /etc/postfix/master.cf را ویرایش کنید.

- در گوشه سمت راست بالای Data Fusion studio، روی Configure کلیک کنید. روی Pipeline alert کلیک کنید و دکمه + را بزنید تا پنجره Alerts باز شود. SendEmail را انتخاب کنید.

- فرم پیکربندی ایمیل را پر کنید. برای هر نوع هشدار، از منوی کشویی Run Condition یکی از گزینههای تکمیل، موفقیت یا شکست را انتخاب کنید. اگر Include Workflow Token = false باشد ، فقط اطلاعات فیلد Message ارسال میشود. اگر Include Workflow Token = true باشد ، اطلاعات فیلد Message و اطلاعات دقیق Workflow Token ارسال میشود. برای Protocol باید از حروف کوچک استفاده کنید. برای Sender از هر ایمیل " جعلی " غیر از آدرس ایمیل شرکت خود استفاده کنید.

۷. پیکربندی، استقرار، اجرا/زمانبندی خط لوله

- در گوشه بالا سمت راست Data Fusion studio، روی Configure کلیک کنید. Spark را برای Engine Config انتخاب کنید. در پنجره Configure روی Save کلیک کنید.

- برای پیشنمایش دادهها، روی «پیشنمایش» کلیک کنید و برای بازگشت به پنجره قبلی، دوباره روی «پیشنمایش» کلیک کنید. همچنین میتوانید خط لوله را در حالت پیشنمایش **اجرا** کنید.

- برای مشاهده گزارشها، روی گزارشها کلیک کنید.
- برای ذخیره همه تغییرات، روی ذخیره کلیک کنید.
- برای وارد کردن پیکربندی خط لوله ذخیره شده هنگام ساخت خط لوله جدید، روی «وارد کردن» کلیک کنید.
- برای خروجی گرفتن از پیکربندی خط لوله، روی Export کلیک کنید.
- برای استقرار خط لوله، روی «استقرار» کلیک کنید.
- پس از استقرار، روی Run کلیک کنید و منتظر بمانید تا خط لوله به طور کامل اجرا شود.

- شما میتوانید با انتخاب گزینهی «تکثیر» در زیر دکمهی «اقدامات» ، خط لوله را کپی کنید.
- شما میتوانید با انتخاب گزینهی «صادرات» در زیر دکمهی «اقدامات» ، پیکربندی خط لوله را صادر کنید.
- در صورت تمایل، برای تنظیم محرکهای خط لوله، روی Inbound triggers یا Outbound triggers در لبه چپ یا راست پنجره Studio کلیک کنید.
- برای زمانبندی اجرای خط لوله و بارگذاری دادهها به صورت دورهای، روی «زمانبندی» کلیک کنید.

- خلاصه نمودارهایی از تاریخچه اجرا، رکوردها، گزارشهای خطا و هشدارها را نشان میدهد.
۸. اعتبارسنجی
- خط لوله اعتبارسنجی با موفقیت اجرا شد.

- اعتبارسنجی کنید که آیا BigQuery Dataset همه جداول را دارد یا خیر.
bq ls $PROJECT_ID:$DATASET_ID
tableId Type Labels Time Partitioning
----------------- ------- -------- -------------------
Allergies TABLE
Careplans TABLE
Conditions TABLE
Encounters TABLE
Imaging_Studies TABLE
Immunizations TABLE
Medications TABLE
Observations TABLE
Organizations TABLE
Patients TABLE
Procedures TABLE
Providers TABLE
- دریافت ایمیلهای هشدار (در صورت پیکربندی).
مشاهده نتایج
برای مشاهده نتایج پس از اجرای pipeline:
- جدول را در رابط کاربری BigQuery جستجو کنید. به رابط کاربری BigQuery بروید
- کوئری زیر را با نام پروژه، مجموعه داده و جدول خودتان بهروزرسانی کنید.

۹. تمیز کردن
برای جلوگیری از تحمیل هزینه به حساب پلتفرم گوگل کلود خود برای منابع استفاده شده در این آموزش:
بعد از اتمام آموزش، میتوانید منابعی را که در GCP ایجاد کردهاید، پاک کنید تا سهمیه شما را اشغال نکنند و در آینده برای آنها هزینهای از شما دریافت نشود. بخشهای بعدی نحوه حذف یا غیرفعال کردن این منابع را شرح میدهند.
حذف مجموعه داده BigQuery
برای حذف مجموعه داده BigQuery که به عنوان بخشی از این آموزش ایجاد کردهاید، این دستورالعملها را دنبال کنید.
حذف سطل GCS
برای حذف سطل GCS که به عنوان بخشی از این آموزش ایجاد کردهاید، این دستورالعملها را دنبال کنید.
حذف نمونه Cloud Data Fusion
برای حذف نمونه Cloud Data Fusion خود، این دستورالعملها را دنبال کنید.
حذف پروژه
سادهترین راه برای حذف هزینهها، حذف پروژهای است که برای آموزش ایجاد کردهاید.
برای حذف پروژه:
- در کنسول GCP، به صفحه پروژهها بروید. به صفحه پروژهها بروید
- در لیست پروژهها، پروژهای را که میخواهید حذف کنید انتخاب کنید و روی «حذف» کلیک کنید.
- در کادر محاورهای، شناسه پروژه را تایپ کنید و سپس برای حذف پروژه، روی خاموش کردن کلیک کنید.
۱۰. تبریک
تبریک میگویم، شما با موفقیت آزمایشگاه کد برای دریافت دادههای مراقبتهای بهداشتی در BigQuery با استفاده از Cloud Data Fusion را به پایان رساندید.
شما دادههای CSV را از فضای ذخیرهسازی ابری گوگل به BigQuery وارد کردهاید.
شما به صورت بصری خط لوله یکپارچهسازی دادهها را برای بارگیری، تبدیل و پوششدهی دادههای مراقبتهای بهداشتی به صورت انبوه ساختید.
اکنون مراحل کلیدی مورد نیاز برای شروع سفر تجزیه و تحلیل دادههای مراقبتهای بهداشتی خود با BigQuery در پلتفرم Google Cloud را میدانید.