יצירה וניהול של תצוגות עם פרמטרים
אפשר ליצור תצוגה עם פרמטרים מתצוגה לוגית ב-Bigtable ואז לבצע פעולות בתצוגות עם פרמטרים.
לפני שקוראים את הדף הזה, מומלץ לעיין בסקירה הכללית על תצוגות עם פרמטרים.
לפני שמתחילים
אם אתם מתכוונים להשתמש ב-Google Cloud CLI, אתם צריכים לבצע את השלבים הבאים:
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות ליצירה ולניהול של תצוגות עם פרמטרים, צריך לבקש מהאדמין להקצות לכם את התפקיד Bigtable Admin (roles/bigtable.admin) במופע.
לחלופין, אפשר לבקש את ההרשאות הבאות ברמת המופע:
- יצירה:
bigtable.logicalViews.create - עדכון:
bigtable.logicalViews.update - מחיקה:
bigtable.logicalViews.delete - רשימה:
bigtable.logicalViews.list
כדי ליצור תצוגה עם פרמטרים, אתם צריכים גם הרשאה לפחות ברמה bigtable.tables.readRows בטבלת המקור.
יצירת תצוגה עם פרמטרים
תצוגה עם פרמטרים היא טבלה וירטואלית שמוגדרת על ידי הצהרת SQL SELECT שיכולה לכלול את הפונקציה VIEW_PARAMETERS().
המסוף
במסוף Google Cloud , פותחים את רשימת מופעי Bigtable.
בוחרים מופע מהרשימה.
בחלונית הניווט, לוחצים על Bigtable Studio.
פותחים כרטיסייה חדשה על ידי לחיצה על תפריט כרטיסייה חדשה ואז בוחרים באפשרות עורך.
כותבים את שאילתת ה-SQL בעורך השאילתות. בהגדרת השאילתה צריך לקרוא לפונקציה
VIEW_PARAMETERS()כדי לציין פרמטר אחד או יותר של התצוגה. לדוגמה:SELECT * FROM TABLE_ID WHERE STARTS_WITH(_key, CAST(VIEW_PARAMETERS('PARAM_NAME') AS BYTES))מחליפים את מה שכתוב בשדות הבאים:
-
TABLE_ID: המזהה של טבלת המקור. -
PARAM_NAME: השם של פרמטר התצוגה, מוקף במירכאות בודדות, שיועבר כארגומנט לפונקציהVIEW_PARAMETERS(). ההגדרה הזו מציינת את שם הפרמטר, ולא את הערך שלו בזמן הריצה. אתם מספקים את ערך זמן הריצה כשאתם שולחים שאילתה לתצוגה המפורטת עם הפרמטרים.
אם השאילתה היא SQL תקינה, תוצג ההודעה תקינה.
-
אופציונלי: כדי לעצב את הדוח בסגנון SQL, לוחצים על עיצוב.
לוחצים על שמירה ואז על שמירה כתצוגה לוגית.
בתיבת הדו-שיח שמירת התצוגה הלוגית, מזינים שם לתצוגה ולוחצים על שמירה.
התצוגה מופיעה בחלונית Explorer, ברשימה Logical Views, עם סמל של תצוגה עם פרמטרים variable_add.
מידע נוסף על השימוש בעורך השאילתות זמין במאמר ניהול הנתונים באמצעות Bigtable Studio.
gcloud
כדי ליצור תצוגה עם פרמטרים, משתמשים בפקודה gcloud bigtable logical-views create.
gcloud bigtable logical-views create VIEW \
--instance=INSTANCE \
--query="SELECT * FROM TABLE_ID WHERE STARTS_WITH(_key, CAST(VIEW_PARAMETERS('PARAM_NAME') AS BYTES))"
מחליפים את מה שכתוב בשדות הבאים:
-
VIEW: מזהה באורך של עד 128 תווים לתצוגה החדשה עם פרמטרים. המזהה חייב להיות ייחודי בין מזהי הטבלאות ומזהי התצוגות המפורטות במופע. -
INSTANCE: המזהה של המופע שבו רוצים ליצור את התצוגה עם הפרמטרים. -
TABLE_ID: המזהה של טבלת המקור. -
PARAM_NAME: השם של פרמטר התצוגה, מוקף במירכאות בודדות, שיועבר כארגומנט לפונקציהVIEW_PARAMETERS(). הפרמטר הזה מגדיר את שם הפרמטר, ולא את הערך שלו בזמן הריצה. אתם מספקים את ערך זמן הריצה כשאתם שולחים שאילתה לתצוגה המפורטת עם הפרמטרים.
אופציונלי:
- כדי להגן על התצוגה עם הפרמטרים מפני מחיקה, מוסיפים לפקודה את הדגל
--deletion-protection. אם לא תחיל את ההגדרה הזו, אפשר יהיה למחוק את התצוגה. אפשר גם לאפשר במפורש מחיקה של תצוגה על ידי הוספת--no-deletion-protection. מידע נוסף מופיע בקטע עדכון תצוגה עם פרמטרים במסמך הזה.
יצירת תצוגה עם פרמטרים באמצעות מפתח שורה מובנה
אם בטבלה שלכם נעשה שימוש במפתח שורה מובנה, אתם יכולים לסנן לפי פלח ספציפי של מפתח השורה. מידע נוסף מופיע במאמר בנושא ניהול סכימות של מפתחות שורות.
לדוגמה, אם מפתח שורה בטבלת היסטוריית רכישות מאחסן את המשתמש, חותמת הזמן של תאריך הרכישה ומזהה ההזמנה, כשהם מופרדים באמצעות הסמל #, אפשר לציין את סכימת השורה באופן הבא:
field {
field_name: "user_id"
type: { bytesType { encoding { raw {} } } }
}
field {
field_name: "reversed_timestamp"
type: { timestampType { encoding { unixMicrosInt64 { encoding: { orderedCodeBytes: {} } } } } }
}
field {
field_name: "order_id"
type: { stringType { encoding { utf8Bytes {} } } }
}
encoding {
delimitedBytes { delimiter "#" }
}
אחר כך תוכלו ליצור תצוגה מפורטת שמסננת לפי השדה של מזהה המשתמש:
המסוף
ב-Bigtable Studio, פותחים את עורך השאילתות ומזינים את שאילתת ה-SQL שמסננת לפי מקטע מפתח השורה:
SELECT * FROM TABLE_ID WHERE user_id = CAST(VIEW_PARAMETERS('user_id') AS BYTES)מחליפים את
TABLE_IDבמזהה של טבלת המקור.לוחצים על שמירה ואז על שמירה כתצוגה לוגית.
בתיבת הדו-שיח שמירת התצוגה הלוגית, מזינים שם לתצוגה ולוחצים על שמירה.
התצוגה מופיעה בחלונית Explorer, ברשימה Logical Views, עם סמל של תצוגה פרמטרית variable_add.
gcloud
כדי ליצור תצוגה עם פרמטרים ומפתח שורה מובנה, משתמשים בפקודה gcloud bigtable logical-views create.
gcloud bigtable logical-views create VIEW \
--instance=INSTANCE \
--query="SELECT * FROM TABLE_ID WHERE user_id = CAST(VIEW_PARAMETERS('user_id') AS BYTES)"
מחליפים את מה שכתוב בשדות הבאים:
-
VIEW: מזהה באורך של עד 128 תווים לתצוגה החדשה עם פרמטרים. המזהה חייב להיות ייחודי בין מזהי הטבלאות ומזהי התצוגות המפורטות במופע. -
INSTANCE: המזהה של המופע שבו רוצים ליצור את התצוגה עם הפרמטרים. -
TABLE_ID: המזהה של טבלת המקור.
עדכון תצוגה עם פרמטרים
מעדכנים תצוגה עם פרמטרים באותו אופן שבו מעדכנים תצוגה לוגית.
מחיקה של תצוגה עם פרמטרים
מחיקה של תצוגה עם פרמטרים מתבצעת באותו אופן שבו מוחקים תצוגה לוגית.
מידע על תצוגות עם פרמטרים
אפשר לראות רשימה של תצוגות עם פרמטרים באותו אופן שבו רואים רשימה של תצוגות לוגיות של מופע.
המסוף
במסוף Google Cloud , פותחים את רשימת מופעי Bigtable.
בוחרים מופע מהרשימה.
בחלונית הניווט, לוחצים על Bigtable Studio.
בחלונית Explorer, מרחיבים את Logical Views.
תצוגות עם פרמטרים מופיעות ברשימה עם סמל של תצוגה עם פרמטרים variable_add, שמבדיל אותן מתצוגות לוגיות רגילות.
אם למופע יש יותר מ-10 צפיות, לוחצים על הצגת פרטים נוספים כדי לטעון את 10 הצפיות הבאות.
gcloud
כדי לראות רשימה של תצוגות לוגיות של מכונה, משתמשים בפקודה gcloud bigtable logical-views list.
gcloud bigtable logical-views list --instance=INSTANCE
מחליפים את INSTANCE במזהה המכונה.
שאילתה של תצוגות עם פרמטרים
השאילתות של תצוגות עם פרמטרים דומות לשאילתות של טבלאות רגילות, אבל צריך לספק את המיפוי view_parameters בבקשה.
המסוף
במסוף Google Cloud , פותחים את רשימת מופעי Bigtable.
בוחרים מופע מהרשימה.
בחלונית הניווט, לוחצים על Bigtable Studio.
בחלונית Explorer, מרחיבים את Logical Views.
לצד התצוגה עם הפרמטרים שרוצים לשלוח לגביה שאילתה, לוחצים על התפריט more_vert View actions (פעולות בתצוגה) ואז על Query view (שאילתה בתצוגה).
ייפתח חלונית Parameters עם שמות הפרמטרים של התצוגה המקדימה מאוכלסים מראש.
בהצגת פרמטרים, מזינים את ערכי זמן הריצה לכל פרמטר נדרש בשדות ערך.
הערכים של הפרמטרים מועברים כמחרוזות. אם פרמטר בהגדרת התצוגה המפורטת מומר לסוג אחר (למשל, מספר שלם או בייטים), מזינים את ערך המחרוזת הגולמי.
אופציונלי: כדי להוסיף עוד פרמטרים, לוחצים על הוספת פרמטר ואז מזינים את שם הפרמטר ואת הערך שלו. שמות הפרמטרים חייבים להיות ייחודיים בפרמטרים של התצוגה.
לוחצים על Save.
בעורך השאילתות, לוחצים על הפעלה.
התוצאות של השאילתה יופיעו בטבלה Results.
אם מריצים את השאילתה בלי לספק את הפרמטרים הנדרשים של התצוגה המפורטת, תוצג הודעת שגיאה בקטע התוצאות עם לחצן עריכת פרמטרים. לוחצים על Edit parameters (עריכת פרמטרים) כדי לפתוח את החלונית Parameters (פרמטרים) ומזינים את ערכי הפרמטרים החסרים.
ערכי הפרמטרים מוגדרים לכל כרטיסייה בכלי לעריכת שאילתות. אם עוברים מ-Bigtable Studio במהלך ההפעלה וחוזרים, הכרטיסיות הפתוחות, השאילתות, התוצאות והפרמטרים שהוגדרו נשמרים.
Java
בדוגמה הבאה מוצגת שאילתה של תצוגה עם פרמטרים בשם purchase_history_pv, שמסננת נתונים על סמך מזהה משתמש:
// Assumes 'purchase_history_pv' was created with the definition:
// SELECT * FROM purchases WHERE user_id = CAST(VIEW_PARAMETERS('user_id') AS BYTES)
String query = "SELECT customer_info[email], order_details[status], order_info[items] from purchase_history_pv";
PreparedStatement preparedStatement = dataClient.prepareStatement(query);
BoundStatement boundStatement = preparedStatement.bind().build();
// The user ID is now passed out-of-band in a view parameters map.
Map<String, Value> viewParameters = new HashMap<>();
viewParameters.put("user_id", Value.newBuilder().setType(stringType()).setStringValue(userId).build());
// Execute the query, passing the view parameters using a proto field in the request.
ResultSet rs = dataClient.executeQuery(
boundStatement,
viewParameters
);
כך המשתמש לא יכול לראות את user_id
הפרמטר או לשנות אותו בתוך השאילתה עצמה, ונוצר הפרדה לוגית ברורה.