Datasource یک سرویس وب است که از پروتکل Chart Tools Datasource پشتیبانی می کند. شما می توانید یک پرس و جوی SQL را به یک Datasource ارسال کنید و در پاسخ یک DataTable حاوی اطلاعات مناسب دریافت خواهید کرد. برخی از نمونههای Datasources عبارتند از Google Spreadsheets و SalesForce.
ارسال درخواست
برای ارسال درخواست:
یک شی Query را با URL منبع داده خود نمونه سازی کنید. URL باید نشان دهد که چه دادههایی درخواست میشود، در نحوی که آن منبع داده آن را درک میکند.
به صورت اختیاری گزینه های درخواست مانند روش ارسال را به عنوان پارامتر دوم اختیاری در سازنده شی Query مشخص کنید (برای جزئیات به پارامتر opt_options سازنده Query مراجعه کنید):
به صورت اختیاری یک رشته زبان پرس و جو برای مرتب کردن یا فیلتر کردن نتایج اضافه کنید و سپس درخواست را ارسال کنید. منابع داده برای پشتیبانی از زبان پرس و جوی Chart Tools Datasource لازم نیست. اگر Datasource از زبان پرس و جو پشتیبانی نکند، رشته پرس و جو SQL را نادیده می گیرد، اما همچنان یک DataTable را برمی گرداند. زبان پرس و جو یک نوع زبان SQL است. نحو کامل زبان پرس و جو را اینجا بخوانید.
پرس و جو را ارسال کنید و یک کنترل کننده پاسخ تماس را مشخص کنید که هنگام دریافت پاسخ فراخوانی می شود: برای جزئیات بیشتر به بخش بعدی مراجعه کنید.
در اینجا نمونه ای از ارسال درخواست برای داده در محدوده سلولی 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 .
کنترل کننده پاسخ شما باید کارهای زیر را انجام دهد:
با فراخوانی response.isError() بررسی کنید که آیا درخواست موفقیت آمیز بوده یا شکست خورده است. شما نباید هیچ پیام خطایی را به کاربر نمایش دهید. کتابخانه Visualization یک پیغام خطا برای شما در ظرف <div> شما نمایش می دهد. با این حال، اگر میخواهید خطاها را به صورت دستی مدیریت کنید، میتوانید از کلاس goog.visualization.errors برای نمایش پیامهای سفارشی استفاده کنید (به مثال Query Wrapper برای مثالی از مدیریت خطای سفارشی مراجعه کنید).
اگر درخواست با موفقیت انجام شد، پاسخ شامل یک 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 - صفحه مرجع برای کلاسی که پاسخ به یک پرس و جو را می بندد.
تاریخ آخرین بهروزرسانی 2024-07-10 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2024-07-10 بهوقت ساعت هماهنگ جهانی."],[[["\u003cp\u003eThis page explains how to send a SQL query to a Datasource, a web service supporting the Chart Tools Datasource protocol, to receive a DataTable with the requested data.\u003c/p\u003e\n"],["\u003cp\u003eYou can use a Query object to send a request with optional parameters for sending method and a query language string for filtering data, receiving a response handled by a callback function.\u003c/p\u003e\n"],["\u003cp\u003eThe response handler checks for errors and, if successful, retrieves the DataTable from the QueryResponse for use in visualizations like charts.\u003c/p\u003e\n"],["\u003cp\u003eCSV data can be either manually converted to Google Charts datatable format or placed on a web server and queried using the techniques described on the page.\u003c/p\u003e\n"],["\u003cp\u003eMore detailed information on query language syntax, the Query class, and the QueryResponse class can be found via provided links.\u003c/p\u003e\n"]]],[],null,["# Data Queries\n\nThis page describes how to send a query to a data source that supports the Chart Tools Datasource\nprotocol.\n\nContents\n--------\n\n1. [Overview](#overview)\n2. [Sending a request](#Sending_a_Query)\n3. [Processing the response](#Processing_the_Query_Response)\n4. [Reading CSV files](#csv)\n5. [More information](#moreinfo)\n\nOverview\n--------\n\n\nA Datasource is a web service that supports the Chart Tools Datasource protocol. You can send a\nSQL query to a Datasource, and in response you will receive a DataTable populated with the\nappropriate information. Some examples of Datasources include\n[Google Spreadsheets](/chart/interactive/docs/spreadsheets) and SalesForce.\n\nSending a request\n-----------------\n\n**To send a request:**\n\n1. Instantiate a [Query](/chart/interactive/docs/reference#Query) object with the URL of your Datasource. The URL should indicate what data is being requested, in a syntax understood by that data source.\n2. Optionally specify request options such as sending method as an optional second parameter in the `Query` object constructor (see the Query constructor's [`opt_options`](/chart/interactive/docs/reference#Query) parameter for details):\n3. Optionally add a [query language string](/chart/interactive/docs/querylanguage) to sort or filter the results, and then send the request. Datasources are not required to support the Chart Tools Datasource query language. If the Datasource does not support the query language, it will ignore the SQL query string, but still return a `DataTable`. The query language is a SQL language variant; read the full [query language syntax here](/chart/interactive/docs/querylanguage).\n4. Send the query, specifying a callback handler that will be called when the response is received: see next section for details.\n\n\nHere's an example of sending a request for data in a Google Spreadsheet cell range; to learn how\nto get the URL for a Google Spreadsheet, see\n[here](/chart/interactive/docs/spreadsheets#Google_Spreadsheets_as_a_Data_Source): \n\n```gdscript\nfunction initialize() {\n var opts = {sendMethod: 'auto'};\n // Replace the data source URL on next line with your data source URL.\n var query = new google.visualization.Query('http://spreadsheets.google.com?key=123AB&...', opts);\n\n // Optional request to return only column C and the sum of column B, grouped by C members.\n query.setQuery('select C, sum(B) group by C');\n\n // Send the query with a callback function.\n query.send(handleQueryResponse);\n}\n\nfunction handleQueryResponse(response) {\n // Called when the query response is returned.\n ...\n}\n```\n\nIf you are sending your query from within Apps Script, be sure to use [`IFRAME` mode](/apps-script/reference/html/sandbox-mode).\n\nProcessing the response\n-----------------------\n\n\nYour response handler function will be called when the request returns. The parameter passed in\nto your response handler function is of type\n[google.visualization.QueryResponse](/chart/interactive/docs/reference#QueryResponse).\nIf the request was successful, the response contains a data table\n(class `google.visualization.DataTable`). If the request failed, the response contains\ninformation about the error, and no `DataTable`.\n\n**Your response handler should do the following:**\n\n1. Check whether the request succeeded or failed by calling `response.isError()`. You shouldn't need to display any error messages to the user; the Visualization library will display an error message for you in your container `\u003cdiv\u003e`. However, if you do want to handle errors manually, you can use the [`goog.visualization.errors`](/chart/interactive/docs/reference#errordisplay) class to display custom messages (see the [Query Wrapper Example](/chart/interactive/docs/examples#querywrapper) for an example of custom error handling).\n2. If the request succeeded, the response will include a `DataTable` that you can retrieve by calling `getDataTable()`. Pass it to your chart.\n\nThe following code demonstrates handling the previous request to draw a pie chart: \n\n```gdscript\nfunction handleQueryResponse(response) {\n\n if (response.isError()) {\n alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage());\n return;\n }\n\n var data = response.getDataTable();\n var chart = new google.visualization.PieChart(document.getElementById('chart_div'));\n chart.draw(data, {width: 400, height: 240, is3D: true});\n}\n```\n\nReading CSV files\n-----------------\n\nIf you want to build a chart out of CSV (comma-separated values)\ndata, you have two choices. Either manually convert the CSV data into\nthe [Google\nCharts datatable format](/chart/interactive/docs/datatables_dataviews#creatingpopulating), or place the CSV file on the web server\nserving the chart, and query it using the technique on this page.\n\nMore information\n----------------\n\n- [Query Language Syntax](/chart/interactive/docs/querylanguage) - Describes the syntax of the language used to make data queries.\n- [Query Class](/chart/interactive/docs/reference#Query) - Reference page for the class that wraps a query.\n- [QueryResponse Class](/chart/interactive/docs/reference#QueryResponse) - Reference page for the class that wraps the response to a query."]]