1. مقدمه
آخرین به روز رسانی: 2020-02-28
این آزمایشگاه کد یک الگوی دریافت داده را برای وارد کردن داده های مراقبت بهداشتی با فرمت CSV در BigQuery به صورت انبوه نشان می دهد. ما از Cloud Data fusion Batch Data Pipeline برای این آزمایشگاه استفاده خواهیم کرد. دادههای واقعی آزمایش مراقبتهای بهداشتی در سطل فضای ذخیرهسازی Google Cloud ( gs://hcls_testing_data_fhir_10_patients/csv/ ) برای شما ایجاد و در دسترس قرار گرفته است.
در این آزمایشگاه کد یاد خواهید گرفت:
- نحوه دریافت دادههای CSV (بارگیری دستهای برنامهریزیشده) از GCS به BigQuery با استفاده از Cloud Data Fusion .
- نحوه ایجاد بصری خط لوله یکپارچه سازی داده در Cloud Data Fusion برای بارگیری، تبدیل و پوشاندن داده های مراقبت های بهداشتی به صورت انبوه .
برای اجرای این کد لبه به چه چیزی نیاز دارید؟
- شما نیاز به دسترسی به یک پروژه GCP دارید.
- باید نقش مالک برای پروژه 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 پیدا کنید.
اگر به یک مجموعه داده جدید نیاز دارید، همیشه می توانید آن را با استفاده از SyntheaTM ایجاد کنید. سپس، به جای کپی کردن آن از سطل در مرحله Copy input data، آن را در GCS آپلود کنید.
2. راه اندازی پروژه 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>
سطل GCS را برای ذخیره داده های ورودی و گزارش خطا با استفاده از ابزار gsutil ایجاد کنید .
gsutil mb -l us gs://$BUCKET_NAME
به مجموعه داده مصنوعی دسترسی پیدا کنید.
- از آدرس ایمیلی که برای ورود به کنسول Cloud استفاده میکنید، یک ایمیل به 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
3. Cloud Data Fusion Environment Setup
برای فعال کردن Cloud Data Fusion API و دادن مجوزهای لازم، این مراحل را دنبال کنید:
API ها را فعال کنید
- به کتابخانه GCP Console API بروید.
- از لیست پروژه ها، پروژه خود را انتخاب کنید.
- در کتابخانه API، API مورد نظر برای فعال کردن را انتخاب کنید. اگر برای یافتن API به کمک نیاز دارید، از قسمت جستجو و/یا فیلترها استفاده کنید.
- در صفحه API، روی ENABLE کلیک کنید.
یک نمونه Cloud Data Fusion ایجاد کنید .
- در کنسول GCP، ID Project خود را انتخاب کنید.
- Data Fusion را از منوی سمت چپ انتخاب کنید، سپس روی دکمه CREATE AN INSTANCE در وسط صفحه کلیک کنید (اولین ایجاد)، یا روی دکمه CREATE INSTANCE در منوی بالا کلیک کنید (ایجاد اضافی).
- نام نمونه را وارد کنید. Enterprise را انتخاب کنید.
- روی دکمه CREATE کلیک کنید.
راه اندازی مجوزهای نمونه
پس از ایجاد یک نمونه، از مراحل زیر برای اعطای مجوز به حساب سرویس مرتبط با مجوزهای نمونه در پروژه خود استفاده کنید:
- با کلیک کردن روی نام نمونه، به صفحه جزئیات نمونه بروید.
- حساب سرویس را کپی کنید.
- به صفحه IAM پروژه خود بروید.
- در صفحه مجوزهای IAM، اکنون حساب سرویس را به عنوان یک عضو جدید اضافه می کنیم و نقش Cloud Data Fusion API Service Agent را به آن می دهیم. روی دکمه افزودن کلیک کنید، سپس «حساب سرویس» را در قسمت اعضای جدید جایگذاری کنید و Service Management -> Cloud Data Fusion API Server Agent را انتخاب کنید.
- روی ذخیره کلیک کنید.
پس از انجام این مراحل، میتوانید با کلیک کردن روی پیوند View Instance در صفحه نمونههای Cloud Data Fusion یا صفحه جزئیات یک نمونه، استفاده از Cloud Data Fusion را شروع کنید.
قانون فایروال را تنظیم کنید.
- برای بررسی اینکه آیا قانون پیش فرض-allow-ssh وجود دارد یا خیر، به کنسول GCP -> VPC Network -> قوانین فایروال بروید.
- اگر نه، یک قانون فایروال اضافه کنید که به تمام ترافیک 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
با استفاده از UI: روی ایجاد قانون فایروال کلیک کنید و اطلاعات را پر کنید:
4. یک طرحواره برای تبدیل بسازید
اکنون که محیط Cloud Fusion را در GCP داریم، بیایید یک طرح واره بسازیم. ما به این طرح برای تبدیل داده های CSV نیاز داریم.
- در پنجره Cloud Data Fusion، روی پیوند View Instance در ستون Action کلیک کنید. به صفحه دیگری هدایت خواهید شد. برای باز کردن نمونه Cloud Data Fusion، روی URL ارائه شده کلیک کنید. انتخاب شما برای کلیک بر روی دکمه "شروع تور" یا "نه، متشکرم" در پنجره بازشو خوش آمدید.
- منوی "همبرگر" را گسترش دهید، Pipeline -> Studio را انتخاب کنید
- در قسمت Transform در پالت Plugin در سمت چپ، روی گره Wrangler دوبار کلیک کنید، که در UI Data Pipelines ظاهر می شود.
- به گره Wrangler اشاره کنید و روی Properties کلیک کنید. روی دکمه Wrangle کلیک کنید، سپس یک فایل منبع .csv (به عنوان مثال، بیماران.csv) را انتخاب کنید، که باید دارای تمام فیلدهای داده برای ساخت طرح مورد نظر باشد.
- روی فلش رو به پایین (تغییر ستون) در کنار نام هر ستون (مثلاً بدنه) کلیک کنید.
- به طور پیش فرض، واردات اولیه فرض می کند که فقط یک ستون در فایل داده شما وجود دارد. برای تجزیه آن به عنوان CSV، Parse → CSV را انتخاب کنید، سپس جداکننده را انتخاب کنید و کادر "Set first row as header" را علامت بزنید. روی دکمه Apply کلیک کنید.
- روی فلش پایین کنار فیلد بدنه کلیک کنید، برای حذف قسمت بدنه، گزینه Delete Column را انتخاب کنید. علاوه بر این، میتوانید تبدیلهای دیگری مانند حذف ستونها، تغییر نوع داده برای برخی از ستونها (پیشفرض نوع «رشته»)، تقسیم ستونها، تنظیم نام ستونها و غیره را امتحان کنید.
- برگههای «ستونها» و «مراحل تبدیل» طرح خروجی و دستور Wrangler را نشان میدهند. روی Apply در گوشه سمت راست بالا کلیک کنید. روی دکمه Validate کلیک کنید. علامت سبز "هیچ خطایی یافت نشد" نشان دهنده موفقیت است.
- در ویژگیهای Wrangler، روی منوی کرکرهای Actions کلیک کنید تا در صورت نیاز، طرح مورد نظر را در فضای ذخیرهسازی محلی خود برای واردات آینده صادر کنید .
- دستور غذای Wrangler را برای استفاده در آینده ذخیره کنید.
parse-as-csv :body ',' true drop body
- برای بستن پنجره Wrangler Properties، روی دکمه X کلیک کنید.
5. گره هایی برای خط لوله بسازید
در این بخش اجزای خط لوله را می سازیم.
- در رابط کاربری Data Pipelines، در سمت چپ بالا، باید ببینید که Data Pipeline - Batch به عنوان نوع خط لوله انتخاب شده است.
- بخشهای مختلفی در پنل سمت چپ بهعنوان فیلتر، منبع، تبدیل، تجزیه و تحلیل، سینک، شرایط و اقدامات، کنترلکنندههای خطا و هشدارها وجود دارد که میتوانید یک گره یا گرهها را برای خط لوله انتخاب کنید.
گره منبع
- گره منبع را انتخاب کنید.
- در قسمت Source در پالت Plugin در سمت چپ، روی گره Google Cloud Storage که در رابط کاربری Data Pipelines ظاهر می شود، دوبار کلیک کنید.
- به گره منبع GCS اشاره کنید و روی Properties کلیک کنید.
- فیلدهای مورد نیاز را پر کنید. فیلدهای زیر را تنظیم کنید:
- برچسب = {هر متن}
- نام مرجع = {هر متن}
- شناسه پروژه = شناسایی خودکار
- مسیر = URL GCS به سطل در پروژه فعلی شما. برای مثال، gs://$BUCKET_NAME/csv/
- قالب = متن
- فیلد مسیر = نام فایل
- فقط نام فایل مسیر = درست است
- خواندن فایل ها به صورت بازگشتی = درست است
- با کلیک بر روی دکمه + ، فیلد "نام فایل" را به طرح خروجی GCS اضافه کنید.
- برای توضیح دقیق روی Documentation کلیک کنید. روی دکمه Validate کلیک کنید. علامت سبز "هیچ خطایی یافت نشد" نشان دهنده موفقیت است.
- برای بستن ویژگی های GCS، روی دکمه 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 از بخش: Build a schema for transformation استفاده مجدد کنید.
- فیلدهای مورد نیاز را پر کنید. فیلدهای زیر را تنظیم کنید:
- برچسب = {هر متن}
- نام فیلد ورودی = {*}
- پیش شرط = {filename != "patients.csv"} برای تشخیص هر فایل ورودی ( به عنوان مثال، بیماران.csv، providers.csv، allergies.csv، و غیره ) از گره منبع.
- یک گره جاوا اسکریپت برای اجرای جاوا اسکریپت ارائه شده توسط کاربر که رکوردها را بیشتر تغییر می دهد، اضافه کنید. در این لبه کد، از گره جاوا اسکریپت برای دریافت مهر زمانی برای هر بهروزرسانی رکورد استفاده میکنیم. گره تبدیل Wrangler را به گره تبدیل جاوا اسکریپت متصل کنید. JavaScript Properties را باز کنید و تابع زیر را اضافه کنید:
function transform(input, emitter, context) { input.TIMESTAMP = (new Date()).getTime()*1000; emitter.emit(input); }
- فیلدی به نام TIMESTAMP را با کلیک بر روی علامت + به طرح خروجی (اگر وجود ندارد) اضافه کنید. مهر زمانی را به عنوان نوع داده انتخاب کنید.
- برای توضیح دقیق روی Documentation کلیک کنید. بر روی دکمه Validate کلیک کنید تا تمام اطلاعات ورودی تایید شود. سبز "هیچ خطایی یافت نشد" نشان دهنده موفقیت است.
- برای بستن پنجره Transform Properties روی دکمه X کلیک کنید.
پوشاندن داده ها و هویت زدایی
- میتوانید با کلیک بر روی فلش رو به پایین در ستون و اعمال قوانین پنهانسازی در زیر انتخاب دادههای ماسک، طبق نیاز خود، ستونهای داده جداگانه را انتخاب کنید (به عنوان مثال، ستون SSN).
- می توانید دستورالعمل های بیشتری را در پنجره Recipe گره 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)
- جدول = {نام جدول}
- برای توضیح دقیق روی Documentation کلیک کنید. بر روی دکمه Validate کلیک کنید تا تمام اطلاعات ورودی تایید شود. سبز "هیچ خطایی یافت نشد" نشان دهنده موفقیت است.
- برای بستن BigQuery Properties، روی دکمه X کلیک کنید.
6. خط لوله داده دسته ای بسازید
اتصال تمام گره ها در یک خط لوله
- یک فلش اتصال > روی لبه سمت راست گره مبدا را بکشید و روی لبه سمت چپ گره مقصد رها کنید.
- یک خط لوله می تواند چندین شاخه داشته باشد که فایل های ورودی را از همان گره منبع GCS دریافت می کند.
- خط لوله را نام ببرید.
همین است. شما به تازگی اولین خط لوله داده دسته ای خود را ایجاد کرده اید و می توانید خط لوله را مستقر کرده و اجرا کنید.
ارسال هشدارهای خط لوله از طریق ایمیل (اختیاری)
برای استفاده از ویژگی Pipeline Alert SendEmail، پیکربندی نیاز به یک سرور ایمیل برای ارسال نامه از یک نمونه ماشین مجازی دارد. برای اطلاعات بیشتر به لینک مرجع زیر مراجعه کنید:
ارسال ایمیل از یک نمونه | مستندات موتور محاسباتی
در این کد لبه، ما با استفاده از مراحل زیر یک سرویس رله نامه را از طریق Mailgun راه اندازی کردیم:
- دستورالعمل های ارسال ایمیل با Mailgun | را دنبال کنید برای تنظیم یک حساب کاربری با Mailgun و پیکربندی سرویس رله ایمیل ، مستندات موتور را محاسبه کنید . تغییرات اضافی در زیر آمده است.
- آدرس های ایمیل تمام گیرندگان را به لیست مجاز Mailgun اضافه کنید. این لیست را می توانید در گزینه Mailgun>Sending>Overview در پانل سمت چپ پیدا کنید.
هنگامی که گیرندگان روی ایمیل ارسال شده از support@mailgun.net روی "موافقم" کلیک کنند، آدرس ایمیل آنها در لیست مجاز برای دریافت ایمیل های هشدار خط لوله ذخیره می شود.
- مرحله 3 از بخش "قبل از شروع" - یک قانون فایروال را به صورت زیر ایجاد کنید:
- مرحله 3 از "پیکربندی Mailgun به عنوان یک رله نامه با Postfix". همانطور که در دستورالعمل ذکر شد، به جای Local Only ، Internet Site یا Internet with smarthost را انتخاب کنید.
- مرحله 4 "پیکربندی Mailgun به عنوان یک رله نامه با Postfix". برای افزودن 10.128.0.0/9 در انتهای mynetworks ، vi /etc/postfix/main.cf را ویرایش کنید.
- برای تغییر smtp پیش فرض (25) به پورت 587، vi /etc/postfix/master.cf را ویرایش کنید.
- در گوشه سمت راست بالای استودیو Data Fusion، روی Configure کلیک کنید. روی Pipeline alert کلیک کنید و روی دکمه + کلیک کنید تا پنجره Alerts باز شود. SendEmail را انتخاب کنید.
- فرم پیکربندی ایمیل را پر کنید. تکمیل، موفقیت یا شکست را از منوی کشویی Run Condition برای هر نوع هشدار انتخاب کنید. اگر Include Workflow Token = false ، فقط اطلاعات قسمت Message ارسال می شود. اگر Include Workflow Token = true ، اطلاعات مربوط به قسمت Message و Workflow Token اطلاعات دقیق ارسال می شود. برای پروتکل باید از حروف کوچک استفاده کنید. از هر ایمیل " جعلی " غیر از آدرس ایمیل شرکت خود برای فرستنده استفاده کنید .
7. پیکربندی، استقرار، اجرای/برنامه ریزی خط لوله
- در گوشه سمت راست بالای استودیو Data Fusion، روی Configure کلیک کنید. Spark for Engine Config را انتخاب کنید. روی Save در پنجره Configure کلیک کنید.
- روی پیشنمایش برای پیشنمایش داده**، ** کلیک کنید و دوباره روی **پیشنمایش** کلیک کنید تا به پنجره قبلی برگردید. همچنین می توانید خط لوله را در حالت پیش نمایش **اجرا کنید**.
- برای مشاهده گزارشها روی Logs کلیک کنید.
- برای ذخیره همه تغییرات روی ذخیره کلیک کنید.
- برای وارد کردن پیکربندی ذخیره شده خط لوله هنگام ساخت خط لوله جدید، روی واردات کلیک کنید.
- برای صادر کردن پیکربندی خط لوله، روی Export کلیک کنید.
- برای استقرار خط لوله روی Deploy کلیک کنید.
- پس از استقرار، روی Run کلیک کنید و منتظر بمانید تا خط لوله کامل شود.
- با انتخاب Duplicate در زیر دکمه Actions می توانید خط لوله را کپی کنید.
- با انتخاب Export در زیر دکمه Actions می توانید پیکربندی خط لوله را صادر کنید.
- در لبه چپ یا راست پنجره استودیو، بر روی Inbound triggers یا Outbound triggers کلیک کنید تا در صورت تمایل، محرک های خط لوله را تنظیم کنید.
- برای برنامه ریزی خط لوله برای اجرا و بارگیری دوره ای داده ها، روی زمان بندی کلیک کنید.
- خلاصه نمودارهای تاریخچه اجرا، سوابق، سیاهههای مربوط به خطا و هشدارها را نشان می دهد.
8. اعتبار سنجی
- خط لوله اعتبارسنجی با موفقیت اجرا شد.
- اگر مجموعه داده BigQuery همه جداول را دارد، اعتبارسنجی کنید.
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
- ایمیل های هشدار را دریافت کنید (در صورت پیکربندی).
مشاهده نتایج
برای مشاهده نتایج پس از اجرای خط لوله:
- جدول را در رابط کاربری BigQuery جستجو کنید. به UI BIGQUERY بروید
- پرس و جو زیر را به نام پروژه، مجموعه داده و جدول خود به روز کنید.
9. تمیز کردن
برای جلوگیری از تحمیل هزینه به حساب Google Cloud Platform برای منابع استفاده شده در این آموزش:
پس از پایان آموزش، میتوانید منابعی را که در GCP ایجاد کردهاید پاکسازی کنید تا سهمیه شما را نگیرند و در آینده برای آنها صورتحساب دریافت نخواهید کرد. بخشهای زیر نحوه حذف یا خاموش کردن این منابع را توضیح میدهند.
حذف مجموعه داده BigQuery
برای حذف مجموعه داده BigQuery که به عنوان بخشی از این آموزش ایجاد کرده اید، این دستورالعمل ها را دنبال کنید.
حذف سطل GCS
برای حذف سطل GCS که به عنوان بخشی از این آموزش ایجاد کرده اید، این دستورالعمل ها را دنبال کنید.
حذف نمونه Cloud Data Fusion
این دستورالعمل ها را دنبال کنید تا نمونه Cloud Data Fusion خود را حذف کنید .
حذف پروژه
ساده ترین راه برای حذف صورتحساب، حذف پروژه ای است که برای آموزش ایجاد کرده اید.
برای حذف پروژه:
- در کنسول GCP، به صفحه پروژه ها بروید. به صفحه پروژه ها بروید
- در لیست پروژه، پروژه ای را که می خواهید حذف کنید انتخاب کنید و روی Delete کلیک کنید.
- در محاوره، شناسه پروژه را تایپ کنید و سپس روی Shut down کلیک کنید تا پروژه حذف شود.
10. تبریک می گویم
تبریک میگوییم، شما با موفقیت آزمایشگاه کد را برای دریافت دادههای مراقبتهای بهداشتی در BigQuery با استفاده از Cloud Data Fusion تکمیل کردید.
دادههای CSV را از Google Cloud Storage به BigQuery وارد کردید.
شما به صورت بصری خط لوله یکپارچه سازی داده ها را برای بارگیری، تبدیل و پوشاندن داده های مراقبت های بهداشتی به صورت انبوه ساخته اید.
اکنون مراحل کلیدی مورد نیاز برای شروع سفر تجزیه و تحلیل دادههای بهداشت و درمان خود را با BigQuery در Google Cloud Platform میدانید.