שאילתות נתונים

בדף הזה מוסבר איך לשלוח שאילתה למקור נתונים שתומך בפרוטוקול Datasource של כלים לתרשימים.

תוכן עניינים

סקירה

Datasource הוא שירות אינטרנט שתומך בפרוטוקול Datasource של Chart Tools. אפשר לשלוח שאילתת SQL למקור נתונים, ובתגובה לכך תקבלו DataTable שיאוכלס במידע המתאים. יש כמה דוגמאות למקורות נתונים: Google Sheets ו-SalesForce.

שליחת בקשה

כדי לשלוח בקשה:

  1. יוצרים אובייקט Query עם כתובת ה-URL של מקור ה-Datasource. כתובת ה-URL צריכה לציין אילו נתונים מבקשים, בתחביר שמובן על ידי מקור הנתונים.
  2. אפשר לציין אפשרויות בקשה, כמו שיטת שליחה כפרמטר שני אופציונלי ב-constructor של האובייקטים Query (לפרטים, אפשר לעיין בפרמטר opt_options של constructor של השאילתות):
  3. אפשר גם להוסיף מחרוזת של שפת השאילתה כדי למיין או לסנן את התוצאות, ואז לשלוח את הבקשה. מקורות נתונים לא נדרשים כדי לתמוך בשפת השאילתות של מקור הנתונים בכלים של תרשימים. אם מקור ה-Datasource לא תומך בשפת השאילתה, הוא יתעלם ממחרוזת השאילתה של SQL, אבל עדיין יחזיר DataTable. שפת השאילתה היא וריאנט של שפת SQL. אפשר לקרוא את התחביר המלא של שפת השאילתה.
  4. שולחים את השאילתה תוך ציון ה-handler של הקריאה החוזרת (callback) שייקרא כשהתשובה תתקבל: לפרטים נוספים, אפשר לעיין בקטע הבא.

לפניכם דוגמה לשליחת בקשה לנתונים בטווח תאים ב-Google Sheets. כאן מוסבר איך למצוא את כתובת ה-URL של גיליון אלקטרוני ב-Google Sheets:

function initialize() {
  var opts = {sendMethod: 'auto'};
  // Replace the data source URL on next line with your data source URL.
  var query = new google.visualization.Query('http://spreadsheets.google.com?key=123AB&...', opts);

  // Optional request to return only column C and the sum of column B, grouped by C members.
  query.setQuery('select C, sum(B) group by C');

  // Send the query with a callback function.
  query.send(handleQueryResponse);
}

function handleQueryResponse(response) {
  // Called when the query response is returned.
  ...
}

אם אתם שולחים את השאילתה מתוך Apps Script, צריך להשתמש במצב IFRAME.

עיבוד התשובה

תתבצע קריאה לפונקציית ה-handler של התשובות כשהבקשה תוחזר. הפרמטר שמועבר לפונקציית ה-handler של התגובה הוא מסוג google.visualization.QueryResponse. אם הבקשה תאושר, התשובה תכיל טבלת נתונים (מחלקה google.visualization.DataTable). אם הבקשה נכשלה, התשובה תכיל מידע על השגיאה ולא תכיל DataTable.

ה-handler של התגובות צריך לבצע את הפעולות הבאות:

  1. בדוק אם הבקשה הצליחה או נכשלה על ידי התקשרות ל-response.isError(). אין צורך להציג הודעות שגיאה למשתמש; ספריית הוויזואליזציה תציג הודעת שגיאה בקונטיינר <div>. עם זאת, אם רוצים לטפל בשגיאות באופן ידני, אפשר להשתמש במחלקה goog.visualization.errors כדי להציג הודעות מותאמות אישית (בדוגמה ל-Query Wrapper תוכלו לראות דוגמה לטיפול בשגיאות בהתאמה אישית).
  2. אם הבקשה תאושר, התשובה תכלול DataTable שאפשר לאחזר על ידי קריאה ל-getDataTable(). מעבירים אותו לתרשים.

הקוד הבא מדגים טיפול בבקשה הקודמת לשרטט תרשים עוגה:

function handleQueryResponse(response) {

  if (response.isError()) {
    alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage());
    return;
  }

  var data = response.getDataTable();
  var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
  chart.draw(data, {width: 400, height: 240, is3D: true});
}

קריאת קובצי CSV

כדי ליצור תרשים מנתונים בפורמט CSV (ערכים המופרדים בפסיקים), יש שתי אפשרויות. ממירים באופן ידני את נתוני ה-CSV לפורמט טבלת הנתונים של Google Charts, או מציבים את קובץ ה-CSV בשרת האינטרנט שבו מוצג התרשים ושולחים שאילתות לגביו באמצעות השיטה בדף הזה.

מידע נוסף