שליחת שאילתות לנתונים בעמודות

בדף הזה מוסבר איך להריץ שאילתות על נתונים בפורמט עמודות.

שליחת שאילתות לנתונים בעמודות

מנוע השאילתות של Spanner מנתח שאילתות ובוחר באופן אוטומטי את הפורמט העמודתי אם הוא מועיל. עם זאת, יכול להיות שעדיין יהיו כמה סוגים של שאילתות שיהיה צורך בהערה לשאילתה כדי להשתמש בפורמט העמודות. בדוגמאות הבאות מוצג אופן השימוש ברמז לשאילתה @{scan_method=columnar}:

GoogleSQL

  • @{scan_method=columnar} SELECT COUNT(*) FROM Singers;
  • SELECT COUNT(*) FROM Singers @{scan_method=columnar};
  • @{scan_method=columnar} SELECT MsgBlob FROM Messages WHERE id='1234';

Postgres

  • /*@ scan_method=columnar */ SELECT COUNT(*) FROM "Singers";
  • SELECT COUNT(*) FROM "Singers" /*@ scan_method=columnar*/;
  • /*@ scan_method=columnar */ SELECT "MsgBlob" FROM "Messages" WHERE id ='1234';

בנוסף, אפשר להשבית את הבחירה האוטומטית של עמודות באופן מפורש באמצעות רמז השאילתה @{scan_method=no_columnar}.

שאילתות מאוחדות ב-BigQuery לשאילתות של נתונים עמודתיים ב-Spanner

כדי לקרוא נתונים עמודתיים מ-Spanner ב-BigQuery, אפשר ליצור מערך נתונים חיצוני או להשתמש בפונקציה EXTERNAL_QUERY.

כשמבצעים שאילתות במערכי נתונים חיצוניים, המערכת משתמשת אוטומטית בנתונים בעמודות אם הם זמינים ומתאימים לשאילתה.

אם משתמשים בפונקציה EXTERNAL_QUERY, ‏ Spanner משתמש אוטומטית בנתונים העמודתיים אם הם זמינים ומתאימים לעומס העבודה. אפשר גם לכלול את הרמז @{scan_method=columnar} בשאילתת Spanner המקוננת.

בדוגמה הבאה לשימוש ברמז לשאילתה:

  • הארגומנט הראשון של הפונקציה EXTERNAL_QUERY מציין את החיבור החיצוני ואת מערך הנתונים, my-project.us.albums.
  • הארגומנט השני הוא שאילתת SQL שבוחרת את MarketingBudget מהטבלה AlbumInfo, כאשר MarketingBudget קטן מ-500,000.
  • הרמז @{scan_method=columnar} מבצע אופטימיזציה של השאילתה החיצונית לסריקה עמודתית.
  • ההצהרה החיצונית SELECT מחשבת את סכום הערכים MarketingBudget שמוחזרים על ידי השאילתה החיצונית.
  • הפסקה AS total_marketing_spend מקצה שם לסיכום המחושב.
SELECT SUM(MarketingBudget) AS total_marketing_spend
FROM
  EXTERNAL_QUERY(
    'my-project.us.albums',
    '@{scan_method=columnar} SELECT AlbumInfo.MarketingBudget FROM AlbumInfo WHERE AlbumInfo.MarketingBudget < 500000;');

המאמרים הבאים