پرس و جوهای داده

این صفحه نحوه ارسال پرس و جو را به منبع داده ای که از پروتکل Chart Tools Datasource پشتیبانی می کند، توضیح می دهد.

فهرست

بررسی اجمالی

Datasource یک سرویس وب است که از پروتکل Chart Tools Datasource پشتیبانی می کند. شما می توانید یک پرس و جوی SQL را به یک Datasource ارسال کنید و در پاسخ یک DataTable حاوی اطلاعات مناسب دریافت خواهید کرد. برخی از نمونه‌های Datasources عبارتند از Google Spreadsheets و SalesForce.

ارسال درخواست

برای ارسال درخواست:

  1. یک شی Query را با URL منبع داده خود نمونه سازی کنید. URL باید نشان دهد که چه داده‌هایی درخواست می‌شود، در نحوی که آن منبع داده آن را درک می‌کند.
  2. به صورت اختیاری گزینه های درخواست مانند روش ارسال را به عنوان پارامتر دوم اختیاری در سازنده شی Query مشخص کنید (برای جزئیات به پارامتر opt_options سازنده Query مراجعه کنید):
  3. به صورت اختیاری یک رشته زبان پرس و جو برای مرتب کردن یا فیلتر کردن نتایج اضافه کنید و سپس درخواست را ارسال کنید. منابع داده برای پشتیبانی از زبان پرس و جوی Chart Tools Datasource لازم نیست. اگر Datasource از زبان پرس و جو پشتیبانی نکند، رشته پرس و جو SQL را نادیده می گیرد، اما همچنان یک DataTable را برمی گرداند. زبان پرس و جو یک نوع زبان SQL است. نحو کامل زبان پرس و جو را اینجا بخوانید.
  4. پرس و جو را ارسال کنید و یک کنترل کننده پاسخ تماس را مشخص کنید که هنگام دریافت پاسخ فراخوانی می شود: برای جزئیات بیشتر به بخش بعدی مراجعه کنید.

در اینجا نمونه ای از ارسال درخواست برای داده در محدوده سلولی Google Spreadsheet آمده است. برای یادگیری نحوه دریافت URL برای یک صفحه گسترده گوگل، اینجا را ببینید:

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 استفاده کنید.

پردازش پاسخ

هنگام بازگشت درخواست، تابع کنترل کننده پاسخ شما فراخوانی می شود. پارامتر ارسال شده به تابع کنترل کننده پاسخ شما از نوع google.visualization.QueryResponse است. اگر درخواست موفقیت آمیز بود، پاسخ حاوی یک جدول داده است (کلاس google.visualization.DataTable ). اگر درخواست ناموفق بود، پاسخ حاوی اطلاعاتی در مورد خطا است، و نه DataTable .

کنترل کننده پاسخ شما باید کارهای زیر را انجام دهد:

  1. با فراخوانی response.isError() بررسی کنید که آیا درخواست موفقیت آمیز بوده یا شکست خورده است. شما نباید هیچ پیام خطایی را به کاربر نمایش دهید. کتابخانه Visualization یک پیغام خطا برای شما در ظرف <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 تبدیل کنید، یا فایل CSV را روی سرور وب که نمودار را ارائه می‌کند قرار دهید و با استفاده از تکنیک موجود در این صفحه، آن را پرس و جو کنید.

اطلاعات بیشتر

  • نحو زبان پرس و جو - نحو زبان مورد استفاده برای ساخت پرس و جوهای داده را توصیف می کند.
  • Query Class - صفحه مرجع برای کلاسی که یک پرس و جو را می پیچد.
  • کلاس QueryResponse - صفحه مرجع برای کلاسی که پاسخ به یک پرس و جو را می بندد.