בעזרת גישת Human-in-the-Loop, שבה ה-AI מנסח את הכללים הראשוניים ואתם בודקים, משפרים ומאמתים אותם, אתם יכולים לתרגם במהירות את נתוני הפרופיל למסגרת של איכות נתונים.
מטרות
- השטחת נתונים מקוננים ב-BigQuery באמצעות תצוגות חומריות כדי להפעיל פרופילים ב-Knowledge Catalog.
- הפעלת סריקות של פרופילים ב-Knowledge Catalog באמצעות ספריית הלקוח של Python.
- אפשר להשתמש ב-Gemini CLI כדי ליצור כללים לאיכות הנתונים על סמך נתונים סטטיסטיים של פרופילים.
- אימות ופריסה של כללים שנוצרו על ידי AI כסריקות איכות של Knowledge Catalog באמצעות תהליך בדיקה של Human-in-the-Loop.
לפני שמתחילים
לפני שמתחילים, מוודאים שיש לכם Google Cloud פרויקט שמופעל בו חיוב.
הכנת הסביבה
בשלבים הבאים נשתמש ב-Cloud Shell, סביבת שורת פקודה שפועלת בענן.
במסוף, לוחצים על Activate Cloud Shell (הפעלת Cloud Shell) בסרגל הכלים שבפינה הימנית העליונה. Google Cloud יחלפו כמה רגעים עד שההקצאה והחיבור לסביבת העבודה יושלמו.
ב-Cloud Shell, מגדירים את מזהה הפרויקט ואת משתני הסביבה:
export PROJECT_ID=$(gcloud config get-value project) gcloud config set project $PROJECT_ID export LOCATION="us-central1" export BQ_LOCATION="us" export DATASET_ID="dataplex_dq_codelab" export TABLE_ID="ga4_transactions"כדאי להשתמש במיקום
us(מספר אזורים) כי נתוני הדוגמה הציבוריים נמצאים גם הם במיקוםus(מספר אזורים). בשביל שאילתות BigQuery, נתוני המקור וטבלת היעד צריכים להיות באותו מיקום.מפעילים את השירותים הנדרשים:
gcloud services enable dataplex.googleapis.com \ bigquery.googleapis.com \ serviceusage.googleapis.comיוצרים מערך נתונים ב-BigQuery לאחסון נתונים לדוגמה ותוצאות:
bq --location=us mk --dataset $PROJECT_ID:$DATASET_IDמכינים את הנתונים לדוגמה, שמגיעים ממערך נתונים ציבורי של מסחר אלקטרוני מ-Google Merchandise Store.
הפקודה
bqהבאה יוצרת טבלה חדשה,ga4_transactions, במערך הנתוניםdataplex_dq_codelab. כדי שהסריקות יפעלו במהירות, המערכת מעתיקה נתונים רק מיום אחד (2021-01-31).bq query \ --use_legacy_sql=false \ --destination_table=$PROJECT_ID:$DATASET_ID.$TABLE_ID \ --replace=true \ 'SELECT * FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_20210131`'משכפלים את מאגר GitHub שמכיל את מבנה התיקיות ואת קובצי התמיכה של המדריך הזה:
# Perform a shallow clone to get only the latest repository structure without the full history git clone --depth 1 --filter=blob:none --sparse https://github.com/GoogleCloudPlatform/devrel-demos.git cd devrel-demos # Specify and download only the folder we need for this lab git sparse-checkout set data-analytics/programmatic-dq cd data-analytics/programmatic-dqהספרייה הזו היא אזור העבודה הפעיל שלכם.
נתונים מוטמעים בפרופיל
באמצעות פרופיל נתונים, Knowledge Catalog מוצא נתונים סטטיסטיים של עמודות ברמה העליונה, כמו אחוזים של ערכי null, ייחודיות והתפלגות ערכים בנתונים, כדי לעזור לכם להבין אותם.
כדי לקבל נתונים סטטיסטיים לגבי שדות מקוננים, אפשר לשטח את הנתונים באמצעות קבוצה של תצוגות חומריות. כך כל שדה מקונן הופך לעמודה ברמה העליונה ש-Knowledge Catalog יכול ליצור לה פרופיל.
קבלת הסכימה המקוננת
מקבלים את הסכימה המלאה של טבלת המקור, כולל כל המבנים המקוננים, ושומרים את הפלט כקובץ JSON:
bq show --schema --format=json $PROJECT_ID:$DATASET_ID.$TABLE_ID > bq_schema.json
הצגת הסכימה:
jq < bq_schema.json
קובץ bq_schema.json חושף מבנים מורכבים.
השטחת נתונים באמצעות תצוגה מהותית
כשמבטלים את הקינון של נתונים, חשוב לא לבטל את הקינון של כמה מערכים עצמאיים באותה תצוגה. הפעולה הזו מבצעת שאילתת איחוד (cross join) מרומז (מכפלה קרטזית) בין המערכים, מה שגורם לשורות להתרבות בצורה שגויה ולשיבוש הנתונים.
מומלץ ליצור כמה תצוגות מפורטות, שכל אחת מהן מיועדת למטרה ספציפית. כל תצוגה צריכה לשמור על רמת פירוט ברורה אחת. בשלב הזה יוצרים את התצוגות המהותיות הבאות:
- תצוגה שטוחה של סשן (
mv_ga4_user_session_flat.sql): שורה אחת לכל אירוע. - תצוגת העסקאות (
mv_ga4_ecommerce_transactions.sql): שורה אחת לכל עסקה. - תצוגת פריטים (
mv_ga4_ecommerce_items.sql): שורה אחת לכל פריט.
מאגר הפרויקט מספק שלושה קובצי SQL בספרייה devrel-demos/data-analytics/programmatic-dq שמגדירים את התצוגות האלה.
מריצים את הקבצים האלה מ-Cloud Shell באמצעות פקודות BigQuery הבאות.
envsubst < mv_ga4_user_session_flat.sql | bq query --use_legacy_sql=false
envsubst < mv_ga4_ecommerce_transactions.sql | bq query --use_legacy_sql=false
envsubst < mv_ga4_ecommerce_items.sql | bq query --use_legacy_sql=false
הפעלת סריקות של פרופילים באמצעות לקוח Python
עכשיו אפשר ליצור ולהריץ סריקות של פרופיל נתונים בקטלוג הידע לכל תצוגה חומרית. הסקריפט הבא ב-Python משתמש בספריית הלקוח google-cloud-dataplex כדי לבצע אוטומציה של התהליך הזה.
לפני שמריצים את הסקריפט, יוצרים סביבה וירטואלית מבודדת של Python בספריית הפרויקט.
# Create the virtual environment
python3 -m venv dq_venv
# Activate the environment
source dq_venv/bin/activate
מתקינים את ספריית הלקוח של Knowledge Catalog בסביבה הווירטואלית.
# Install the Dataplex client library
pip install google-cloud-dataplex
עכשיו, אחרי שהגדרתם את הסביבה והתקנתם את הספרייה, אתם יכולים להשתמש בסקריפט 1_run_dataplex_scans.py. הסקריפט הזה יוצר פרופיל של שלושת התצוגות החומריות על ידי יצירה והרצה של סריקה לכל אחת מהן. בסיום התהליך, המערכת יוצרת סיכום סטטיסטי מפורט שמשמש בשלב הבא ליצירת כללים לאיכות נתונים שמבוססים על AI.
מריצים את הסקריפט מהטרמינל של Cloud Shell.
python3 1_run_dataplex_scans.py
בדיקת סריקות הפרופיל
אפשר לראות את הסריקות החדשות של הפרופילים ב Google Cloud מסוף.
- בתפריט הניווט, עוברים אל Knowledge Catalog ובוחרים באפשרות Data profiling & quality בקטע Govern.
- שלושת הסריקות של הפרופיל יופיעו ברשימה, לצד סטטוס העבודה העדכני שלהן. כדי לראות את התוצאות המפורטות של סריקה, לוחצים על הסריקה.
ייצוא תוצאות הפרופיל לקובץ JSON
כדי ש-Gemini יוכל לקרוא את הסריקות של הפרופיל, צריך לחלץ את התוכן שלהן לקובץ מקומי.
משתמשים בסקריפט 2_dq_profile_save.py כדי למצוא את הסריקה האחרונה שהסתיימה בהצלחה בתצוגה mv_ga4_user_session_flat, להוריד את נתוני הפרופיל ולשמור אותם בקובץ בשם dq_profile_results.json.
python3 2_dq_profile_save.py
בסיום הסקריפט, נוצר קובץ dq_profile_results.json בספרייה. בקובץ הזה יש מטא-נתונים סטטיסטיים מפורטים שדרושים ליצירת כללים לאיכות נתונים. כדי לראות את התוכן שלו, מריצים את הפקודה הבאה:
cat dq_profile_results.json
יצירת כללים לאיכות הנתונים באמצעות Gemini CLI
עכשיו אפשר להשתמש ב-Gemini CLI כדי לקרוא את תוצאות הסריקה של הפרופיל המקומי.
כתיבה ידנית של כללים לאיכות הנתונים במערכי נתונים מורכבים היא תהליך ארוך שעלול להוביל לשגיאות. ה-AI הגנרטיבי מזרז את תהליך העבודה הזה על ידי יצירת הגדרה ראשונית מקיפה של איכות הנתונים תוך שניות. כך תוכלו לעבור מביצוע ידני של משימות לפיקוח ברמה גבוהה.
כדי להפעיל את Gemini CLI, משתמשים בפקודה הבאה:
gemini
עכשיו אפשר ליצור כללי איכות. מכיוון ש-CLI יכול לקרוא קבצים בספרייה הנוכחית, הוא יכול להשתמש ישירות בנתוני הסריקה של הפרופיל החדש.
איך מבקשים מ-Gemini ליצור תוכנית
אפשר לבקש מ-Gemini לפעול כמו מומחה לניתוח נתונים ולהציע תוכנית ליצירת כללים לאיכות הנתונים. אומרים ל-Gemini לא לכתוב את קובץ ה-YAML עדיין, כדי שיתמקד בניתוח. Gemini מנתח את קובץ ה-JSON ומחזיר תוכנית מובנית
You are an expert Google Cloud Dataplex engineer.
Your first task is to create a plan. I have a file in the current directory named ./dq_profile_results.json.
Based on the statistical data within that file, propose a step-by-step plan to create a Dataplex data quality rules file.
Your plan should identify which specific columns are good candidates for rules like nonNullExpectation, setExpectation, or rangeExpectation, and explain why based on the metrics (for example, "Plan to create a nonNullExpectation for column X because its null percentage is 0%").
Do not write the YAML file yet. Just provide the plan.
יצירת כללים לאיכות הנתונים
התוכנית של Gemini מתבססת לחלוטין על דפוסים סטטיסטיים, ואין לה ידע ספציפי על העסק שלכם.
כדאי לעיין בתוכנית ולשאול את עצמכם את השאלות הבאות:
- האם היא תואמת ליעדים העסקיים ולהקשר שלכם?
- האם יש כללים שהם נכונים מבחינה סטטיסטית אבל לא מעשיים (למשל, rowCount קפדני לטבלה שגדלה)?
אפשר לשפר את התוכנית עם Gemini או לאשר אותה כמו שהיא באמצעות ההנחיה לדוגמה הבאה. ההנחיה מתחילה בפידבק, ואז מורה ל-Gemini ליצור את הקובץ dq_rules.yaml בספריית העבודה ולפעול בהתאם למפרט של DataQualityRule, כי Knowledge Catalog דורש מבנה YAML מדויק. כך אפשר למנוע שגיאות בתחביר או שימוש בגרסאות סכימה מיושנות.
- "The plan looks good. Please proceed."
- "The rowCount rule is not necessary, as the table size changes daily. The rest of the plan is approved. Please proceed."
- "For the setExpectation on the geo_continent column, please also include 'Antarctica'."
Once you have incorporated my feedback, please generate the `dq_rules.yaml` file.
You must adhere to the following strict requirements:
- Schema Compliance: The YAML structure must strictly conform to the DataQualityRule specification. For a definitive source of truth, you must refer to the sample_rule.yaml file in the current directory and the DataQualityRule class definition. Search for the `data_quality.py` file inside the `./dq_venv/lib/` directory to read this class definition.
- Data-Driven Values: All rule parameters, such as thresholds or expected values, must be derived directly from the statistical metrics in dq_profile_results.json.
- Rule Justification: For each rule, add a comment (#) on the line above explaining the justification, as you outlined in your plan.
- Output Purity: The final output must only be the raw YAML code block, perfectly formatted and ready for immediate deployment.
יצירה והפעלה של סריקה לבדיקת איכות הנתונים
עכשיו יש לכם קבוצה של כללי איכות נתונים שנוצרו על ידי סוכן, ואתם יכולים לרשום אותם ולפרוס אותם כסריקה.
כדי לצאת מ-Gemini CLI, מזינים
/quitאו לוחצים עלCtrl+Cפעמיים.לאחר מכן, יוצרים סריקת נתונים ב-Knowledge Catalog:
export DQ_SCAN="dq-scan" gcloud dataplex datascans create data-quality $DQ_SCAN \ --project=$PROJECT_ID \ --location=$LOCATION \ --data-quality-spec-file=dq_rules.yaml \ --data-source-resource="//bigquery.googleapis.com/projects/$PROJECT_ID/datasets/$DATASET_ID/tables/mv_ga4_user_session_flat"לבסוף, מריצים את הסריקה:
gcloud dataplex datascans run $DQ_SCAN --location=$LOCATION --project=$PROJECT_IDהפקודה הזו יוצרת סריקה של איכות הנתונים בשם
dq-scan.אפשר לבדוק את התקדמות הסריקה בקטע Knowledge Catalog במסוף Google Cloud .
- בתפריט הניווט, עוברים אל Knowledge Catalog ובוחרים באפשרות Data profiling & quality בקטע Govern.
- מחפשים את
dq-scan. בסיום הסריקה, לוחצים על הסריקה כדי לראות את התוצאות.
הסרת המשאבים
כדי להימנע מחיוב קבוע על המשאבים שיצרתם במדריך הזה, מחקו אותם.
מחיקת הסריקות של Knowledge Catalog
כדי למחוק את הפרופיל ואת הסריקות האיכותיות, משתמשים בשמות הסריקות הספציפיים מתוך ה-codelab הזה:
# Delete the Data Quality Scan
gcloud dataplex datascans delete dq-scan \
--location=us-central1 \
--project=$PROJECT_ID --quiet
# Delete the Data Profile Scans
gcloud dataplex datascans delete profile-scan-mv-ga4-user-session-flat \
--location=us-central1 \
--project=$PROJECT_ID --quiet
gcloud dataplex datascans delete profile-scan-mv-ga4-ecommerce-transactions \
--location=us-central1 \
--project=$PROJECT_ID --quiet
gcloud dataplex datascans delete profile-scan-mv-ga4-ecommerce-items \
--location=us-central1 \
--project=$PROJECT_ID --quiet
מחיקת מערך הנתונים לדוגמה
מוחקים את מערך הנתונים הזמני ב-BigQuery ואת הטבלאות שבו.
bq rm -r -f --dataset $PROJECT_ID:dataplex_dq_codelab
מחיקת קבצים מקומיים
משביתים את הסביבה הווירטואלית של Python ומסירים את מאגר השכפולים ואת התוכן שלו:
deactivate
cd ../../..
rm -rf devrel-demos
סיכום
כל הכבוד, הרגע יצרת תהליך עבודה מקצה לקצה של משילות מידע באופן פרוגרמטי.
שילוב של Gemini עם Knowledge Catalog מאפשר לכם לבנות בסיס לניהול מבוסס-AI. הגישה הזו לא מחליפה את לולאת השליטה, אבל היא מזרזת את תהליך יצירת הכללים כדי שתוכלו להתמקד באימות ובשיפור הכללים על סמך הלוגיקה העסקית שלכם.
המאמרים הבאים
- במאמר AI-Assisted Governance: Accelerating Data Quality with Human Oversight (ניהול בעזרת AI: שיפור איכות הנתונים באמצעות פיקוח אנושי) אפשר לקרוא מידע נוסף על העקרונות שמאחורי הארכיטקטורה הזו.
- ניהול איכות הנתונים כקוד באמצעות יצירת צינור עיבוד נתונים של CI/CD.
- אפשר להשתמש בכללי SQL בהתאמה אישית כדי לאכוף לוגיקה שספציפית לעסק.
- כדי להוזיל את העלויות, כדאי להשתמש בפילטרים ובדגימה כדי לבצע אופטימיזציה של הסריקות.
- כדי לנהל את משילות המידע בהיקף נרחב, אפשר לבצע אוטומציה של התשתית על ידי הקצאת משאבים של Knowledge Catalog באמצעות Terraform.
- מידע נוסף על סוכן ה-AI בקוד פתוח של Gemini CLI
- אפשר לנסות תרחישי שימוש אחרים ב-Knowledge Catalog