চার্ট টুলস ডেটাসোর্স প্রোটোকল (V0.6) বাস্তবায়ন করা

এই পৃষ্ঠাটি বর্ণনা করে যে আপনি কীভাবে একটি পরিষেবা বাস্তবায়ন করতে পারেন যা চার্ট টুলস ডেটাসোর্স প্রোটোকল সমর্থন করে কোয়েরি ক্লাস ব্যবহার করে চার্টে ডেটা প্রকাশ করতে।

বিষয়বস্তু

শ্রোতা

এই পৃষ্ঠাটি মূলত ডেভেলপারদের জন্য যারা চার্ট টুলস ডেটাসোর্স লাইব্রেরির সাহায্য ছাড়াই তাদের নিজস্ব ডেটা উৎস তৈরি করবে। আপনি যদি এটি বা অন্য কোন সাহায্যকারী লাইব্রেরি ব্যবহার করেন তবে প্রথমে আপনার লাইব্রেরির ডকুমেন্টেশন পড়ুন।

ক্লায়েন্ট ভিজ্যুয়ালাইজেশন এবং ডেটা উৎসের মধ্যে যোগাযোগের জন্য ব্যবহৃত ওয়্যার প্রোটোকল বুঝতে আগ্রহী পাঠকদের জন্যও এই পৃষ্ঠাটি তৈরি করা হয়েছে।

আপনি যদি একটি ভিজ্যুয়ালাইজেশন তৈরি করেন বা ব্যবহার করেন তবে আপনাকে এই পৃষ্ঠাটি পড়ার দরকার নেই৷

এই নথিটি পড়ার জন্য, আপনার মৌলিক JSON এবং HTTP অনুরোধ সিনট্যাক্স বোঝা উচিত। ব্যবহারকারীর দৃষ্টিকোণ থেকে চার্ট কীভাবে কাজ করে তাও আপনাকে বুঝতে হবে।

দ্রষ্টব্য: চার্ট টুলস ডেটাসোর্স প্রোটোকল সমর্থন করে এমন কোনো নন-Google ডেটাসোর্সকে Google আনুষ্ঠানিকভাবে সমর্থন বা সমর্থন করে না।

ওভারভিউ

আপনার নিজের চার্ট বা অন্যান্য চার্টের জন্য ডেটা উৎস প্রদানকারী হওয়ার জন্য আপনি চার্ট টুলস ডেটাসোর্স প্রোটোকল বাস্তবায়ন করতে পারেন। একটি চার্ট টুলস ডেটাসোর্স একটি URL প্রকাশ করে, যাকে ডেটাসোর্স URL বলা হয়, যেখানে একটি চার্ট HTTP GET অনুরোধ পাঠাতে পারে। প্রতিক্রিয়া হিসাবে, ডেটা উত্স সঠিকভাবে ফর্ম্যাট করা ডেটা ফেরত দেয় যা চার্টটি পৃষ্ঠায় গ্রাফিক রেন্ডার করতে ব্যবহার করতে পারে। এই অনুরোধ-প্রতিক্রিয়া প্রোটোকলটি Google ভিজ্যুয়ালাইজেশন API ওয়্যার প্রোটোকল নামে পরিচিত।

একটি ডেটা উত্স দ্বারা পরিবেশিত ডেটা বিভিন্ন সংস্থান থেকে বের করা যেতে পারে, যেমন একটি ফাইল বা ডাটাবেস। একমাত্র সীমাবদ্ধতা হল যে আপনি টাইপ করা কলাম সহ একটি দ্বিমাত্রিক টেবিল হিসাবে ডেটা ফর্ম্যাট করতে পারেন।

একটি চার্ট টুলস ডেটাসোর্স হিসাবে, আপনাকে অবশ্যই একটি নির্দিষ্ট বিন্যাসে একটি অনুরোধ পার্স করতে হবে এবং একটি নির্দিষ্ট বিন্যাসে একটি প্রতিক্রিয়া ফেরত দিতে হবে। আপনি দুটি সাধারণ উপায়ে এটি করতে পারেন:

  • অনুরোধ এবং প্রতিক্রিয়া পরিচালনা করতে নিম্নলিখিত সহায়ক লাইব্রেরিগুলির মধ্যে একটি ব্যবহার করুন এবং ফিরে আসার জন্য ডেটা টেবিল তৈরি করুন। আপনি যদি এই লাইব্রেরিগুলির মধ্যে একটি ব্যবহার করেন, তাহলে আপনাকে একটি টেবিলের আকারে লাইব্রেরিতে আপনার ডেটা উপলব্ধ করার জন্য প্রয়োজনীয় কোডটি লিখতে হবে।
    • জাভা ডেটাসোর্স লাইব্রেরি - অনুরোধ এবং প্রতিক্রিয়া পরিচালনা করে, আপনার দেওয়া ডেটা থেকে প্রতিক্রিয়া সারণী তৈরি করে এবং Google চার্ট টুল SQL ক্যোয়ারী ভাষা প্রয়োগ করে।
    • পাইথন ডেটাসোর্স লাইব্রেরি - একটি প্রতিক্রিয়া টেবিল তৈরি করে প্রতিক্রিয়া সিনট্যাক্স তৈরি করে। অনুরোধ পার্সিং বা Google চার্ট টুল SQL ক্যোয়ারী ভাষা বাস্তবায়ন পরিচালনা করে না

      বা

  • অনুরোধটি পরিচালনা করে, একটি ডেটা টেবিল তৈরি করে এবং প্রতিক্রিয়া পাঠিয়ে স্ক্র্যাচ থেকে আপনার নিজস্ব ডেটা উত্স লিখুন

কিভাবে এটা কাজ করে:

  1. ডেটা উৎস একটি URL প্রকাশ করে, যাকে ডেটাসোর্স URL বলা হয়, যেখানে চার্ট একটি HTTP GET অনুরোধ পাঠায়।
  2. ক্লায়েন্ট পরামিতি সহ একটি HTTP GET অনুরোধ করে যা ফেরত ডেটা, একটি ঐচ্ছিক ক্যোয়ারী স্ট্রিং এবং ঐচ্ছিক কাস্টম প্যারামিটারগুলির জন্য কোন ফর্ম্যাট ব্যবহার করতে হবে তা বর্ণনা করে৷
  3. ডেটাসোর্স অনুরোধটি গ্রহণ করে এবং পার্স করে, যেমনটি অনুরোধ বিন্যাসে বর্ণিত হয়েছে।
  4. ডেটাসোর্স অনুরোধ করা বিন্যাসে ডেটা প্রস্তুত করে; সাধারণত, এটি একটি JSON টেবিল। রেসপন্স ফরম্যাট রেসপন্স ফরম্যাট বিভাগে কভার করা হয়েছে। ডেটাসোর্স ঐচ্ছিকভাবে ভিজ্যুয়ালাইজেশন API ক্যোয়ারী ভাষাকে সমর্থন করতে পারে যা ফিল্টারিং, বাছাই এবং অন্যান্য ডেটা ম্যানিপুলেশন নির্দিষ্ট করে।
  5. ডেটাসোর্স একটি HTTP প্রতিক্রিয়া তৈরি করে যাতে ক্রমিক ডেটা এবং অন্যান্য প্রতিক্রিয়া পরামিতি অন্তর্ভুক্ত থাকে এবং প্রতিক্রিয়া বিন্যাসে বর্ণিত হিসাবে এটি ক্লায়েন্টের কাছে ফেরত পাঠায়

দ্রষ্টব্য: অনুরোধ এবং প্রতিক্রিয়াগুলির জন্য এই নথিতে তালিকাভুক্ত সমস্ত প্যারামিটার এবং স্ট্রিং ধ্রুবক মান (যেমন responseHandler এবং "ওকে") ছোট হাতের এবং কেস-সংবেদনশীল।

সর্বনিম্ন প্রয়োজনীয়তা

চার্ট টুলস ডেটাসোর্স হিসাবে পরিবেশন করার জন্য এইগুলি সর্বনিম্ন প্রয়োজনীয়তা:

  • তথ্য উৎস HTTP GET অনুরোধ গ্রহণ করা উচিত, এবং আপনার ক্লায়েন্টদের জন্য উপলব্ধ করা উচিত.
  • প্রোটোকল একটি সংস্করণ স্কিম পরিবর্তন করতে এবং সমর্থন করতে পারে (বর্তমান সংস্করণটি 0.6), তাই আপনার ডেটা উত্সটি পূর্ববর্তী সংস্করণগুলির পাশাপাশি বর্তমান সংস্করণগুলি ব্যবহার করে অনুরোধগুলিকে সমর্থন করবে৷ দ্রুত নতুন সংস্করণে আপগ্রেড করা কোনো ক্লায়েন্টকে ভাঙতে না দেওয়ার জন্য আপনার নতুন সংস্করণ প্রকাশের সাথে সাথে সমর্থন করার চেষ্টা করা উচিত।
  • অনুরোধের অংশ হিসাবে অজানা বৈশিষ্ট্য পাঠানো হলে ব্যর্থ হবেন না। এর কারণ হল নতুন সংস্করণগুলি নতুন বৈশিষ্ট্যগুলি প্রবর্তন করতে পারে যা আপনি জানেন না।
  • আপনি প্রত্যাশিত শুধুমাত্র বৈশিষ্ট্য পার্স. যদিও নতুন সংস্করণ নতুন বৈশিষ্ট্য প্রবর্তন করতে পারে, অন্ধভাবে গ্রহণ করবেন না এবং পুরো অনুরোধ স্ট্রিং ব্যবহার করবেন না। দূষিত আক্রমণ থেকে নিজেকে রক্ষা করতে, সাবধানে পার্স করুন এবং শুধুমাত্র আপনার প্রত্যাশার বৈশিষ্ট্যগুলি ব্যবহার করুন৷
  • আপনি যদি নিজে ক্লায়েন্ট চার্ট কোডিং না করেন তবে আপনার ডেটা উত্সের প্রয়োজনীয়তাগুলি সাবধানে নথিভুক্ত করুন ৷ এর মধ্যে নিম্নলিখিত তথ্য নথিভুক্ত করা রয়েছে:
    • যে কোনো কাস্টম প্যারামিটার যা আপনি গ্রহণ করেন,
    • আপনি Google Visualization API ক্যোয়ারী ভাষা পার্স করতে পারেন কি না, এবং
    • আপনি কি ধরণের ডেটা ফেরত দেন এবং সেই ডেটার গঠন (সারি এবং কলামগুলি কী প্রতিনিধিত্ব করে এবং যে কোনও লেবেলিং)।
  • অজানা ক্লায়েন্টদের কাছ থেকে অনুরোধ গ্রহণ করে এমন একটি সাইটের জন্য সমস্ত মানক নিরাপত্তা সতর্কতা অবলম্বন করুন ৷ আপনি যুক্তিসঙ্গতভাবে আপনার প্যারামিটারে MD5, হ্যাশিং, এবং অন্যান্য নিরাপত্তা ব্যবস্থা সমর্থন করতে পারেন অনুরোধগুলি প্রমাণীকরণ করতে বা দূষিত আক্রমণ থেকে সুরক্ষিত করতে সাহায্য করতে পারেন, এবং আশা করেন ক্লায়েন্টরা আপনার প্রয়োজনীয়তা সম্পর্কে সচেতন থাকবে এবং তাদের প্রতিক্রিয়া জানাবে। যাইহোক, আপনার সমস্ত প্রয়োজনীয়তা ভালভাবে নথিভুক্ত করতে ভুলবেন না, যদি আপনি নিজে চার্ট কোডিং না করেন। নীচে নিরাপত্তা বিবেচনা দেখুন.
  • সমস্ত অনুরোধ এবং প্রতিক্রিয়া স্ট্রিং UTF-8 এনকোড করা উচিত।
  • সবচেয়ে গুরুত্বপূর্ণ প্রতিক্রিয়া বিন্যাস JSON. প্রথমে JSON প্রয়োগ করতে ভুলবেন না, যেহেতু এটি বেশিরভাগ চার্ট দ্বারা ব্যবহৃত ফর্ম্যাট। পরে অন্যান্য প্রতিক্রিয়া প্রকার যোগ করুন।
  • আপনাকে ভিজ্যুয়ালাইজেশন API ক্যোয়ারী ভাষা সমর্থন করার প্রয়োজন নেই, তবে এটি আপনার ডেটা উৎসকে গ্রাহকদের জন্য আরও উপযোগী করে তোলে।
  • আপনাকে যেকোনো এবং সব ধরনের চার্ট থেকে অনুরোধ সমর্থন করার প্রয়োজন নেই এবং আপনি কাস্টম চার্টের জন্য কাস্টম প্যারামিটার সমর্থন করতে পারেন। কিন্তু নিচে বর্ণিত স্ট্যান্ডার্ড ফরম্যাটে আপনার প্রতিক্রিয়া ফেরত দেওয়া উচিত।

নিরাপত্তা বিবেচনা

আপনার ডেটা উত্স ডিজাইন করার সময়, আপনাকে বিবেচনা করতে হবে যে আপনার ডেটা কতটা নিরাপদ হওয়া উচিত। আপনি আপনার সাইটের জন্য বিভিন্ন ধরনের নিরাপত্তা স্কিম ব্যবহার করতে পারেন, সহজ পাসওয়ার্ড অ্যাক্সেস থেকে নিরাপদ কুকি প্রমাণীকরণ পর্যন্ত।

XSSI (ক্রস-সাইট স্ক্রিপ্ট অন্তর্ভুক্তি) আক্রমণ চার্টের সাথে একটি ঝুঁকি। একজন ব্যবহারকারী এমন একটি পৃষ্ঠায় নেভিগেট করতে পারে যেখানে একটি দূষিত স্ক্রিপ্ট রয়েছে যা তারপরে বর্তমান ব্যবহারকারীর শংসাপত্র ব্যবহার করে ডেটা উৎস URL-এ প্রশ্ন করার চেষ্টা শুরু করে। ব্যবহারকারী যদি কোনো সাইট থেকে লগ আউট না করে থাকেন, তাহলে স্ক্রিপ্টটি বর্তমান ব্যবহারকারী হিসেবে প্রমাণীকৃত হবে এবং সেই সাইটের অনুমতি থাকবে। একটি <script src> ট্যাগ ব্যবহার করে ক্ষতিকারক স্ক্রিপ্ট JSONP-এর মতো ডেটা উৎস অন্তর্ভুক্ত করতে সক্ষম হতে পারে।

নিরাপত্তার একটি অতিরিক্ত স্তর হিসাবে, আপনি আপনার ডেটা উত্স হিসাবে একই ডোমেন থেকে আসা অনুরোধগুলিকে সীমাবদ্ধ করার কথা বিবেচনা করতে পারেন৷ এটি আপনার ডেটা উত্সের দৃশ্যমানতাকে যথেষ্ট সীমাবদ্ধ করবে, তবে আপনার যদি খুব সংবেদনশীল ডেটা থাকে যা আপনার ডোমেনের বাইরে থেকে অ্যাক্সেস করা উচিত নয়, তাহলে আপনার এটি বিবেচনা করা উচিত। একটি ডেটা উত্স যা শুধুমাত্র একই ডোমেনের অনুরোধগুলিকে অনুমতি দেয় তাকে একটি সীমাবদ্ধ ডেটা উত্স বলা হয়, একটি সীমাবদ্ধ ডেটা উত্সের বিপরীতে, যা যে কোনও ডোমেন থেকে প্রশ্নগুলি গ্রহণ করবে৷ একটি সীমাবদ্ধ ডেটা উত্স কীভাবে প্রয়োগ করতে হয় সে সম্পর্কে এখানে কিছু বিবরণ রয়েছে:

নিশ্চিত করার জন্য যে একটি অনুরোধ সত্যিই আপনার ডোমেনের মধ্যে থেকে আসছে , এবং বাইরের ডোমেন থেকে নয় (বা ডোমেনের ভিতরের একটি ব্রাউজার যা XSRF আক্রমণের অধীনে রয়েছে):

  • অনুরোধে একটি "X-DataSource-Auth" শিরোনামের উপস্থিতি যাচাই করুন৷ এই হেডারটি Google Visualization API দ্বারা সংজ্ঞায়িত করা হয়েছে; আপনাকে এই শিরোনামের বিষয়বস্তু পরীক্ষা করার দরকার নেই, শুধুমাত্র যাচাই করুন যে এটি সেখানে আছে। আপনি যদি Google চার্ট টুলস ডেটাসোর্স লাইব্রেরি ব্যবহার করেন, তাহলে আপনার জন্য লাইব্রেরি এটি পরিচালনা করতে পারে।
  • ক্লায়েন্টকে প্রমাণীকরণ করতে কুকি প্রমাণীকরণ ব্যবহার করুন। এখনও প্রমাণীকরণ কুকিজ রেখে ক্রস-ডোমেন অনুরোধে কাস্টম শিরোনাম ইনজেক্ট করার কোন পরিচিত উপায় নেই।
  • একটি <script src> ট্যাগের সাথে অন্তর্ভুক্ত করা হলে JavaScript কার্যকর করার সম্ভাবনা নেই। এটি করার জন্য, আপনার JSON প্রতিক্রিয়ার উপসর্গ )]}' দিয়ে একটি নতুন লাইন অনুসরণ করুন। আপনার ক্লায়েন্ট ফালা প্রতিক্রিয়া থেকে উপসর্গ. XmlHttpRequest এর জন্য এটি শুধুমাত্র তখনই সম্ভব যখন অনুরোধটি একই ডোমেন থেকে আসে।

বিন্যাস অনুরোধ

একটি ক্লায়েন্ট কাস্টম উপাদান, একটি ঐচ্ছিক ক্যোয়ারী স্ট্রিং, স্বাক্ষর এবং অন্যান্য উপাদান সহ বেশ কয়েকটি প্যারামিটার সহ একটি HTTP GET অনুরোধ পাঠায়। আপনি শুধুমাত্র এই বিভাগে বর্ণিত প্যারামিটারগুলি পার্স করার জন্য দায়ী, এবং দূষিত আক্রমণ এড়াতে অন্যদের পরিচালনা না করার বিষয়ে সতর্ক হওয়া উচিত।

ঐচ্ছিক প্যারামিটারের জন্য ডিফল্ট মান থাকতে ভুলবেন না (উভয় স্ট্যান্ডার্ড এবং কাস্টম), এবং আপনার সাইটের ডকুমেন্টেশনে আপনার সমস্ত ডিফল্ট নথিভুক্ত করুন।

এখানে কয়েকটি নমুনা অনুরোধ রয়েছে (আপনি উদাহরণে এই নথির শেষে আরও অনুরোধ এবং প্রতিক্রিয়ার নমুনা দেখতে পারেন):

দ্রষ্টব্য : নিম্নলিখিত অনুরোধের স্ট্রিংগুলি, এবং যেগুলি উদাহরণ বিভাগে দেখানো হয়েছে, পাঠানোর আগে url-এস্কেপ করা উচিত৷

Basic request, no parameters:
http://www.example.com/mydatasource

Request with the tqx parameter that contains two properties:
http://www.example.com/mydatasource?tqx=reqId:0;sig:4641982796834063168

Request with a query string:
http://www.example.com/mydatasource?tq=limit 1

অনুরোধ স্ট্রিং-এর সমস্ত স্ট্যান্ডার্ড প্যারামিটারের তালিকা এখানে রয়েছে। মনে রাখবেন যে উভয় প্যারামিটারের নাম (যেমন "সংস্করণ") এবং ধ্রুবক স্ট্রিং মান (যেমন "ঠিক আছে", "সতর্কতা" এবং "না_পরিবর্তিত") কেস-সংবেদনশীল। সারণীটিও বর্ণনা করে যে প্যারামিটারটি পাঠানোর প্রয়োজন আছে কিনা এবং যদি পাঠানো হয়, আপনাকে এটি পরিচালনা করতে হবে কিনা।

প্যারামিটার
অনুরোধে প্রয়োজন?
ডাটা সোর্স হ্যান্ডেল করতে হবে?
বর্ণনা
tq
না
না

Google ভিজ্যুয়ালাইজেশন API ক্যোয়ারী ভাষায় লেখা একটি ক্যোয়ারী, প্রত্যাবর্তিত ডেটা কীভাবে ফিল্টার, বাছাই বা অন্যথায় ম্যানিপুলেট করা যায় তা উল্লেখ করে। স্ট্রিংটি উদ্ধৃত করার প্রয়োজন নেই।

উদাহরণ: http://www.example.com/mydatasource?tq=select Col1

tqx
না
হ্যাঁ

স্ট্যান্ডার্ড বা কাস্টম প্যারামিটারের জন্য কোলন-ডিলিমিটেড কী/মান জোড়ার একটি সেট। জোড়া সেমিকোলন দ্বারা পৃথক করা হয়. এখানে ভিজ্যুয়ালাইজেশন প্রোটোকল দ্বারা সংজ্ঞায়িত স্ট্যান্ডার্ড প্যারামিটারগুলির একটি তালিকা রয়েছে:

  • reqId - [ অনুরোধে প্রয়োজনীয়; ডেটা উত্স অবশ্যই পরিচালনা করতে হবে ] এই অনুরোধের জন্য একটি সংখ্যাসূচক শনাক্তকারী৷ এটি ব্যবহার করা হয় যাতে কোনও ক্লায়েন্ট প্রতিক্রিয়া পাওয়ার আগে একাধিক অনুরোধ পাঠালে, ডেটা উত্স সঠিক অনুরোধের সাথে প্রতিক্রিয়া সনাক্ত করতে পারে। প্রতিক্রিয়ায় এই মানটি ফেরত পাঠান।
  • version - [ অনুরোধে ঐচ্ছিক; ডেটা উত্স অবশ্যই পরিচালনা করতে হবে ] Google ভিজ্যুয়ালাইজেশন প্রোটোকলের সংস্করণ নম্বর৷ বর্তমান সংস্করণ 0.6। যদি পাঠানো না হয়, সর্বশেষ সংস্করণ অনুমান.
  • sig - [ অনুরোধে ঐচ্ছিক; ডাটা সোর্স হ্যান্ডেল করার জন্য ঐচ্ছিক ] এই ডাটা সোর্সের আগের যেকোনো অনুরোধে এই ক্লায়েন্টকে পাঠানো DataTable একটি হ্যাশ। এটি একটি অপ্টিমাইজেশান যা একটি ক্লায়েন্টকে দুবার অভিন্ন ডেটা প্রেরণ এড়াতে। এটি কীভাবে ব্যবহার করবেন সে সম্পর্কে তথ্যের জন্য নীচে আপনার অনুরোধ অপ্টিমাইজ করা দেখুন।
  • out - [ অনুরোধে ঐচ্ছিক; ডেটা উত্স অবশ্যই পরিচালনা করতে হবে ] একটি স্ট্রিং যা প্রত্যাবর্তিত ডেটার বিন্যাস বর্ণনা করে। এটি নিম্নলিখিত মানগুলির মধ্যে যেকোনো একটি হতে পারে:
    • json - [ ডিফল্ট মান ] একটি JSON প্রতিক্রিয়া স্ট্রিং (নীচে বর্ণিত)।
    • html - সারি এবং কলাম সহ একটি মৌলিক HTML টেবিল। যদি এটি ব্যবহার করা হয়, শুধুমাত্র যে জিনিসটি ফেরত দেওয়া উচিত তা হল ডেটা সহ একটি HTML টেবিল; এটি ডিবাগিংয়ের জন্য দরকারী, যেমনটি নীচের প্রতিক্রিয়া বিন্যাস বিভাগে বর্ণিত হয়েছে।
    • csv - কমা দ্বারা পৃথক করা মান। এটি ব্যবহার করা হলে, শুধুমাত্র একটি CSV ডেটা স্ট্রিং ফিরে আসে। আপনি একটি outFileName প্যারামিটার নির্দিষ্ট করে প্রতিক্রিয়া শিরোনামে ফাইলের জন্য একটি কাস্টম নামের অনুরোধ করতে পারেন।
    • tsv-excel - csv এর অনুরূপ, কিন্তু কমার পরিবর্তে ট্যাব ব্যবহার করে এবং সমস্ত ডেটা utf-16 এনকোড করা হয়।
    উল্লেখ্য যে Google ভিজ্যুয়ালাইজেশন এপিআই-তে নির্মিত একটি চার্ট যে শুধুমাত্র ডেটা টাইপ অনুরোধ করবে তা হল json। প্রতিটি প্রকারের বিশদ বিবরণের জন্য নীচের প্রতিক্রিয়া বিন্যাস দেখুন।
  • responseHandler - [ অনুরোধে ঐচ্ছিক; ডেটা সোর্স অবশ্যই পরিচালনা করতে হবে ] ক্লায়েন্ট পৃষ্ঠায় জাভাস্ক্রিপ্ট হ্যান্ডলিং ফাংশনের স্ট্রিং নাম যা প্রতিক্রিয়া সহ কল ​​করা হবে। অনুরোধে অন্তর্ভুক্ত না হলে, মান হল "google.visualization.Query.setResponse"। এটি প্রতিক্রিয়ার অংশ হিসাবে ফেরত পাঠানো হবে; কিভাবে শিখতে নীচের প্রতিক্রিয়া বিন্যাস দেখুন.
  • outFileName - [ অনুরোধে ঐচ্ছিক; পরিচালনার জন্য ডেটা উৎসের জন্য ঐচ্ছিক ] আপনি যদি out:csv বা out:tsv-excel উল্লেখ করেন, তাহলে আপনি ঐচ্ছিকভাবে এখানে উল্লেখ করা ফাইলের নাম অনুরোধ করতে পারেন। উদাহরণ: outFileName=results.csv

উদাহরণ: tqx=version:0.6;reqId:1;sig:5277771;out:json ; responseHandler:myQueryHandler

tqrt
না
না

সংরক্ষিত: এই পরামিতি উপেক্ষা করুন. প্রশ্ন পাঠানোর জন্য যে পদ্ধতি ব্যবহার করা হয়েছিল।

প্রতিক্রিয়া বিন্যাস

প্রতিক্রিয়ার বিন্যাস অনুরোধের out প্যারামিটারের উপর নির্ভর করে, যা প্রত্যাশিত প্রতিক্রিয়ার ধরন নির্দিষ্ট করে। প্রতিটি অনুরোধের প্রকারে কীভাবে প্রতিক্রিয়া জানাতে হয় তা জানতে নিম্নলিখিত বিভাগগুলি দেখুন:

  • JSON - একটি JSON প্রতিক্রিয়া প্রদান করে যা একটি জাভাস্ক্রিপ্ট অবজেক্টের ডেটা অন্তর্ভুক্ত করে যা সরাসরি একটি DataTable কনস্ট্রাক্টরে পাঠানো যেতে পারে। এটি এখন পর্যন্ত সবচেয়ে সাধারণ অনুরোধের ধরন, এবং সঠিকভাবে প্রয়োগ করা সবচেয়ে গুরুত্বপূর্ণ।
  • CSV - ব্রাউজার দ্বারা পরিচালনা করার জন্য একটি সমতল কমা-বিচ্ছিন্ন মান তালিকা প্রদান করে।
  • TSV - একটি ট্যাব-বিচ্ছিন্ন মান তালিকা প্রদান করে, যা ব্রাউজার দ্বারা পরিচালনা করা হবে।
  • HTML - ব্রাউজার দ্বারা রেন্ডার করার জন্য একটি HTML টেবিল প্রদান করে।

আপনার জন্য এই আউটপুট ফর্ম্যাটগুলি তৈরি করতে আপনি Google ভিজ্যুয়ালাইজেশন ডেটা সোর্স লাইব্রেরি (জাভা) বা ভিজ্যুয়ালাইজেশন পাইথন লাইব্রেরি ব্যবহার করতে পারেন।

JSON প্রতিক্রিয়া বিন্যাস

ডিফল্ট প্রতিক্রিয়া বিন্যাস হল JSON যদি অনুরোধে একটি "X-DataSource-Auth" শিরোনাম থাকে এবং অন্যথায় JSONP । মনে রাখবেন যে Google চার্ট ক্লায়েন্ট আসলে JSON এবং JSONP-এর পরিবর্তিত সংস্করণ সমর্থন করে; আপনি যদি জাভা বা পাইথন হেল্পার লাইব্রেরি ব্যবহার করেন, তাহলে তারা আপনার জন্য সঠিক কোড দেবে; আপনি যদি হাত দিয়ে প্রতিক্রিয়া পার্স করছেন, নীচে JSON পরিবর্তনগুলি দেখুন৷

আপনি যদি একই-ডোমেন অনুরোধগুলি প্রয়োগ করেন, তাহলে আপনাকে অনুরোধে "X-DataSource-Auth" শিরোনামের উপস্থিতি যাচাই করতে হবে এবং অনুমোদন কুকি ব্যবহার করতে হবে।

এটি Google ভিজ্যুয়ালাইজেশন API পদ্ধতি google.visualization.Query.send() দ্বারা নির্দিষ্ট করা একমাত্র প্রতিক্রিয়া বিন্যাস। আপনি উদাহরণে এই পৃষ্ঠার শেষে JSON অনুরোধ এবং প্রতিক্রিয়াগুলির কিছু উদাহরণ দেখতে পারেন। আপনার জন্য এই প্রতিক্রিয়া স্ট্রিং তৈরি করতে আপনি Java বা Python সহায়ক লাইব্রেরি ব্যবহার করতে পারেন।

এই প্রতিক্রিয়া বিন্যাসটি হল একটি UTF-8 এনকোড করা JSON অবজেক্ট (একটি অবজেক্ট যা ধনুর্বন্ধনী { } দ্বারা মোড়ানো প্রতিটি সম্পত্তি একটি কমা দ্বারা পৃথক করা হয়েছে) যা নীচের টেবিলের বৈশিষ্ট্যগুলিকে অন্তর্ভুক্ত করে (ডেটাটি table বৈশিষ্ট্যে বরাদ্দ করা হয়েছে)৷ এই JSON অবজেক্টটি অনুরোধ থেকে responseHandler প্যারামিটার মানের ভিতরে আবৃত করা উচিত। তাই, যদি অনুরোধের responseHandler মান "মাইহ্যান্ডলার" হয়, তাহলে আপনাকে এইরকম একটি স্ট্রিং ফেরত দিতে হবে (সংক্ষিপ্ততার জন্য শুধুমাত্র একটি সম্পত্তি দেখানো হয়েছে):

"myHandler({status:ok, ...})"

রিকোয়েস্টে responseHandler মান না থাকলে, ডিফল্ট মান হল "google.visualization.Query.setResponse", তাই আপনাকে এইরকম একটি স্ট্রিং ফেরত দেওয়া উচিত (সংক্ষিপ্ততার জন্য শুধুমাত্র একটি প্রপার্টি দেখানো হয়েছে):

"google.visualization.Query.setResponse({status:ok, ...})"

এখানে উপলব্ধ প্রতিক্রিয়া বস্তু সদস্য আছে:

সম্পত্তি
প্রয়োজন?
বর্ণনা
সংস্করণ
না

একটি স্ট্রিং নম্বর যা Google ভিজ্যুয়ালাইজেশন ওয়্যার প্রোটোকল সংস্করণ নম্বর দেয়। যদি নির্দিষ্ট না করা হয়, ক্লায়েন্ট সর্বশেষ সংস্করণ ধরে নেয়।

উদাহরণ: version=0.6

reqId
হ্যাঁ*
একটি স্ট্রিং নম্বর এই ক্লায়েন্টের জন্য এই অনুরোধের আইডি নির্দেশ করে৷ এটি অনুরোধে থাকলে, একই মান ফেরত দিন। আরো বিস্তারিত জানার জন্য অনুরোধ বিভাগে reqId বিবরণ দেখুন।

* যদি এই প্যারামিটারটি অনুরোধে নির্দিষ্ট করা না থাকে, তাহলে আপনাকে প্রতিক্রিয়াতে এটি সেট করতে হবে না।
অবস্থা
হ্যাঁ

এই অপারেশনের সাফল্য বা ব্যর্থতা বর্ণনাকারী একটি স্ট্রিং। নিম্নলিখিত মানগুলির মধ্যে একটি এবং শুধুমাত্র একটি হতে হবে:

  • ok - সফল অনুরোধ। একটি টেবিল table সম্পত্তি অন্তর্ভুক্ত করা আবশ্যক .
  • warning - সাফল্য, কিন্তু সমস্যা সঙ্গে. একটি টেবিল table সম্পত্তি অন্তর্ভুক্ত করা আবশ্যক .
  • error - একটি সমস্যা ছিল। আপনি যদি এটি ফেরত দেন, তাহলে আপনার table ফেরত দেওয়া উচিত নয় এবং অবশ্যই errors ফেরত দিতে হবে।

উদাহরণ: status:'warning'

সতর্কতা
শুধুমাত্র যদি status=warning

এক বা একাধিক বস্তুর একটি অ্যারে, প্রতিটি একটি অ-মারাত্মক সমস্যা বর্ণনা করে। প্রয়োজন হলে status=warning , অন্যথায় অনুমোদিত নয়। প্রতিটি বস্তুর নিম্নলিখিত স্ট্রিং বৈশিষ্ট্য রয়েছে (প্রতিটি সম্পত্তির জন্য শুধুমাত্র একটি মান ফেরত দিন):

  • reason - [ প্রয়োজনীয় ] সতর্কতার এক-শব্দের স্ট্রিং বর্ণনা। প্রোটোকল নিম্নলিখিত মানগুলি সংজ্ঞায়িত করে, তবে আপনি যদি প্রয়োজন হয় তবে আপনি আপনার নিজস্ব মানগুলি সংজ্ঞায়িত করতে পারেন (তবে, ক্লায়েন্ট কোনও বিশেষ উপায়ে কাস্টম মানগুলি প্রক্রিয়া করবে না)। আপনার শুধুমাত্র একটি reason মান থাকতে পারে:
    • data_truncated - প্রত্যাবর্তিত DataTable থেকে কিছু সারি সরানো হয়েছে, কারণ ব্যবহারকারী একটি ক্যোয়ারী স্ট্রিং অন্তর্ভুক্ত করেছে যা ফলাফলের তালিকাকে ছাঁটাই করেছে, অথবা ডেটা উৎস কোনো কারণে সম্পূর্ণ ফলাফল ফেরত দিতে চায়নি।
    • other - একটি সাধারণ অনির্দিষ্ট সতর্কতা।
  • message - [ ঐচ্ছিক ] একটি সংক্ষিপ্ত উদ্ধৃত স্ট্রিং সমস্যাটি ব্যাখ্যা করে, সম্ভবত একটি সতর্কতা বাক্সের শিরোনাম হিসাবে ব্যবহৃত হয়৷ এটি ব্যবহারকারীর কাছে প্রদর্শিত হতে পারে। HTML সমর্থিত নয়।
  • detailed_message - [ ঐচ্ছিক ] একটি বিশদ উদ্ধৃত স্ট্রিং বার্তা যা সমস্যা এবং সম্ভাব্য সমাধান ব্যাখ্যা করে। একমাত্র HTML সমর্থিত হল <a> একটি একক href বৈশিষ্ট্য সহ উপাদান। ইউনিকোড এনকোডিং সমর্থিত। এটি ব্যবহারকারীর কাছে প্রদর্শিত হতে পারে।

উদাহরণ: warnings:[{reason:'data_truncated',message:'Retrieved data was truncated'}]

ত্রুটি
status=error হলে প্রয়োজন

এক বা একাধিক বস্তুর একটি অ্যারে, প্রতিটি একটি ত্রুটি বর্ণনা করে। status=error হলে প্রয়োজন, অন্যথায় অনুমোদিত নয়। এটি warnings মানের অনুরূপ। নোট করুন যে not_modified ত্রুটি, যদিও একটি ত্রুটি, আসলে ক্লায়েন্টের জন্য একটি ত্রুটি নয়।

অ্যারেতে নিম্নলিখিত স্ট্রিং সদস্য রয়েছে (প্রতিটি সদস্যের জন্য শুধুমাত্র একটি মান ফেরত দিন):

  • reason - [ প্রয়োজনীয় ] warnings.reason এর মতই, কিন্তু নিম্নলিখিত মানগুলি সংজ্ঞায়িত করা হয়েছে:
    • not_modified - শেষ অনুরোধের পর থেকে ডেটা পরিবর্তিত হয়নি। যদি এটি ত্রুটির কারণ হয়, তাহলে table জন্য আপনার একটি মান থাকা উচিত নয়।
    • user_not_authenticated - যদি ডেটা উৎসের প্রমাণীকরণের প্রয়োজন হয় এবং এটি করা না হয়, তাহলে এই মানটি উল্লেখ করুন। ক্লায়েন্ট তারপর message মান সহ একটি সতর্কতা প্রদর্শন করবে।
    • unknown_data_source_id
    • access_denied
    • unsupported_query_operation
    • invalid_query
    • invalid_request
    • internal_error
    • not_supported
    • illegal_formatting_patterns
    • other - একটি সাধারণ, অনির্দিষ্ট ত্রুটি।
  • message - [ ঐচ্ছিক ] warnings.message এর মতই। দ্রষ্টব্য: এটা সম্ভব যে একটি দূষিত ব্যবহারকারী অননুমোদিত ডেটা অ্যাক্সেস করার জন্য একটি মাধ্যম হিসাবে একটি বিস্তারিত ডেটা স্ট্রিং ব্যবহার করতে পারে, এমনকি এটি ব্যবহার করে আপনার ডেটা বা আপনার সাইটকে আক্রমণ করতে পারে৷ আপনি যদি এমন ডেটা সংরক্ষণ করেন যা নিরাপদ হওয়া উচিত, বা ব্যবহারকারীর প্রশ্নগুলি সরাসরি প্রক্রিয়া করা উচিত, তাহলে আক্রমণকারীকে তথ্য প্রদান করতে পারে এমন একটি বিস্তারিত ত্রুটি বার্তা ফেরত না দেওয়ার কথা বিবেচনা করুন; পরিবর্তে, একটি সাধারণ বার্তা দিন, যেমন "খারাপ ক্যোয়ারী স্ট্রিং।"
  • detailed_message - [ ঐচ্ছিক ] warnings.detailed_message মতোই। অত্যধিক বিস্তারিত message তথ্যের জন্য সতর্কতা দেখুন।

উদাহরণ: status:'error',errors:[{reason:'not_modified',message:'Data not modified'}]

স্বাক্ষর
না

টেবিল অবজেক্টের একটি হ্যাশড মান। ক্লায়েন্ট এবং ডেটা উত্সের মধ্যে ডেটা স্থানান্তর অপ্টিমাইজ করার জন্য দরকারী। আপনি যে কোনো হ্যাশ অ্যালগরিদম বেছে নিতে পারেন। আপনি যদি এই সম্পত্তিটিকে সমর্থন করেন, তাহলে আপনার ক্লায়েন্টের দ্বারা পাস করা মানটি ফেরত দেওয়া উচিত যদি কোনও ডেটা ফেরত না দেওয়া হয়, বা নতুন ডেটা ফেরত দিলে একটি নতুন হ্যাশ ফেরত দেওয়া উচিত।

উদাহরণ: sig:'5982206968295329967'

টেবিল
না

আপনার ডেটা সহ জাভাস্ক্রিপ্ট আক্ষরিক স্বরলিপিতে একটি DataTable অবজেক্ট। এই বস্তুর বিন্যাসের বিস্তারিত জানার জন্য লিঙ্ক করা রেফারেন্স বিভাগটি দেখুন। এখানে একটি সাধারণ ডেটা টেবিলের একটি উদাহরণ:

{cols:[{id:'Col1',label:'',type:'number'}],
 rows:[{c:[{v:1.0,f:'1'}]},
       {c:[{v:2.0,f:'2'}]},
       {c:[{v:3.0,f:'3'}]},
       {c:[{v:1.0,f:'1'}]}
      ]
} 

table বৈশিষ্ট্য শুধুমাত্র উপস্থিত থাকা উচিত যদি status=ok বা status=warning । আপনি যদি ডেটা ফেরত না দেন, তাহলে এই সম্পত্তিটি অন্তর্ভুক্ত করবেন না (অর্থাৎ, খালি স্ট্রিং মান সহ সম্পত্তিটি ফেরত দেবেন না)।

উদাহরণ: নীচের উদাহরণ দেখুন।

কঠোর JSON প্রয়োজন

Google-এর হেল্পার লাইব্রেরি, এবং Google-এ পাঠানো সমস্ত প্রশ্ন, কঠোর JSON/JSONP ফেরত দেয়। আপনি যদি প্রত্যাবর্তিত কোডটি নিজে পার্স না করেন তবে এটি আপনার কাছে কোন ব্যাপার না। যদি আপনি হন, তাহলে আপনি JSON.parse() ব্যবহার করে JSON স্ট্রিংকে জাভাস্ক্রিপ্ট অবজেক্টে রূপান্তর করতে পারেন। API দ্বারা JSON কীভাবে প্রক্রিয়া করা হয় তার মধ্যে একটি পার্থক্য হল, যদিও JSON জাভাস্ক্রিপ্ট তারিখের মান সমর্থন করে না (উদাহরণস্বরূপ, "নতুন তারিখ(2008,1,28,0,31,26)"; API একটি বৈধ JSON সমর্থন করে নিম্নলিখিত বিন্যাসে একটি স্ট্রিং হিসাবে তারিখের উপস্থাপনা: Date(year, month, day[,hour, minute, second[, millisecond]]) যেখানে দিনের পরের সবকিছু ঐচ্ছিক, এবং মাসগুলি শূন্য-ভিত্তিক

JSON প্রতিক্রিয়া অপ্টিমাইজ করা

যদি কোনো ক্লায়েন্ট দুটি অনুরোধ করে, এবং অনুরোধের মধ্যে ডেটা পরিবর্তন না হয়, তাহলে ডেটা পুনরায় না পাঠানোর অর্থ হয়; এটা করলে ব্যান্ডউইথ নষ্ট হবে। অনুরোধগুলিকে আরও দক্ষ করার জন্য, প্রোটোকলটি ক্লায়েন্টের ডেটা ক্যাশে করা এবং শেষ অনুরোধের পর থেকে ডেটা পরিবর্তন না হলে প্রতিক্রিয়াতে একটি সংকেত পাঠাতে সহায়তা করে। এটি কিভাবে কাজ করে তা এখানে:

  1. ক্লায়েন্ট ডেটা উৎসে একটি অনুরোধ পাঠায়।
  2. ডেটা উৎস একটি DataTable এবং সেইসাথে DataTable অবজেক্টের একটি হ্যাশ তৈরি করে এবং এর প্রতিক্রিয়াতে উভয়ই রিটার্ন করে (হ্যাশটি tqx. sig প্যারামিটারে ফেরত দেওয়া হয়)। গুগল ভিজ্যুয়ালাইজেশন এপিআই ক্লায়েন্ট DataTable এবং sig মান ক্যাশে করে।
  3. ক্লায়েন্ট ক্যাশে করা tqx.sig মান সহ ডেটার জন্য আরেকটি অনুরোধ পাঠায়।
  4. ডেটা উত্স দুটি উপায়ে প্রতিক্রিয়া জানাতে পারে:
    • পূর্ববর্তী অনুরোধ থেকে ডেটা পরিবর্তিত হলে, ডেটা উত্সটি নতুন DataTable এবং নতুন sig মান হ্যাশ ফেরত পাঠায়।
    • যদি পূর্ববর্তী অনুরোধ থেকে ডেটা পরিবর্তিত না হয়, ডেটা উৎস ফেরত পাঠায় status=error , reason=not_modified , sig= old_sig_value
  5. উভয় ক্ষেত্রেই, চার্ট হোস্ট করা পৃষ্ঠাটি একটি সফল প্রতিক্রিয়া পায়, এবং QueryResponse.getDataTable() এ কল করে DataTable পুনরুদ্ধার করতে পারে। যদি ডেটা একই হয় তবে এটি টেবিলের ক্যাশে করা সংস্করণ হবে।

মনে রাখবেন যে এটি শুধুমাত্র Google ভিজ্যুয়ালাইজেশন API-এ নির্মিত চার্ট থেকে JSON অনুরোধের জন্য কাজ করে।

CSV রেসপন্স ফরম্যাট

যদি অনুরোধটি নির্দিষ্ট করে out:csv , প্রতিক্রিয়াটিতে কোনও মেটাডেটা থাকে না, তবে কেবল ডেটার একটি CSV উপস্থাপনা। একটি CSV টেবিল সাধারণত একটি কমা-বিচ্ছিন্ন তালিকা, যেখানে ডেটার প্রতিটি সারি একটি কমা-বিচ্ছিন্ন মানের তালিকা, যা একটি UNIX নিউলাইন অক্ষর (\n) দিয়ে শেষ হয়। প্রতিটি কলামের জন্য ঘরের মান একই ধরনের হওয়া উচিত। প্রথম সারিটি কলাম লেবেল। এখানে একটি তিন-সারি, তিন-কলাম টেবিলের একটি উদাহরণ:

A, B, C
1.0, "yes", true
2.0, "no", false
3.0, "maybe", true

CSV বিন্যাস এই প্রোটোকল দ্বারা নির্দিষ্ট করা হয় না; ডেটা উৎস তার CSV বিন্যাস সংজ্ঞায়িত করার জন্য দায়ী। যাইহোক, একটি সাধারণ বিন্যাস হল কমা দ্বারা পৃথক করা মানগুলির একটি সেট (কোন মধ্যস্থ স্পেস ছাড়াই), এবং প্রতিটি সারির শেষে একটি নতুন লাইন (\n)। যখন একটি ব্রাউজার একটি CSV স্ট্রিং উত্তর পায়, তখন এটি ব্যবহারকারীকে জিজ্ঞাসা করতে পারে যে স্ট্রিংটি খুলতে কোন অ্যাপ্লিকেশন ব্যবহার করতে হবে বা এটিকে স্ক্রিনে রেন্ডার করতে পারে। জাভা এবং পাইথন ওপেন সোর্স লাইব্রেরিগুলি একটি ডেটা টেবিলকে একটি CSV স্ট্রিংয়ে রূপান্তর করার একটি পদ্ধতি প্রদান করে।

যদি অনুরোধে tqx প্যারামিটারের একটি outFileName সদস্য অন্তর্ভুক্ত থাকে, তাহলে আপনার প্রতিক্রিয়া শিরোনামে নির্দিষ্ট ফাইলের নাম অন্তর্ভুক্ত করার চেষ্টা করা উচিত।

google.visualization.Query অবজেক্ট একটি CSV প্রতিক্রিয়ার অনুরোধ সমর্থন করে না। যদি কোনো ক্লায়েন্ট CSV-এর অনুরোধ করতে চায়, তাহলে আপনি আপনার পৃষ্ঠায় একটি ভিজ্যুয়ালাইজেশন টুলবার গ্যাজেট এম্বেড করতে পারেন, অথবা তারা অনুরোধ তৈরি করতে কাস্টম কোড ব্যবহার করতে পারে, অথবা আপনি একটি লিঙ্ক সরবরাহ করতে পারেন যা tqx এর out:csv সম্পত্তি স্পষ্টভাবে সেট করে, যেমনটি দেখানো হয়েছে নিম্নলিখিত অনুরোধ URL:

অনুরোধ

http://www.example.com/mydatasource?tqx=reqId:1;out:csv

প্রতিক্রিয়া

Label 1,Label2\n1,a\n2,b\n3,c\n4,d

TSV রেসপন্স ফরম্যাট

যদি অনুরোধটি নির্দিষ্ট করে out:tsv-excel , প্রতিক্রিয়াটিতে কোনও মেটাডেটা থাকে না, তবে কেবলমাত্র ডেটার একটি ট্যাব-বিচ্ছিন্ন উপস্থাপনা, utf-16 এনকোডেড । যদি অনুরোধে tqx প্যারামিটারের একটি outFileName সদস্য অন্তর্ভুক্ত থাকে, তাহলে আপনার প্রতিক্রিয়া শিরোনামে নির্দিষ্ট ফাইলের নাম অন্তর্ভুক্ত করার চেষ্টা করা উচিত।

এইচটিএমএল রেসপন্স ফরম্যাট

যদি অনুরোধটি নির্দিষ্ট করে out:html , প্রতিক্রিয়াটি একটি HTML পৃষ্ঠা হওয়া উচিত যা ডেটা সহ একটি HTML টেবিল সংজ্ঞায়িত করে৷ এটি আপনার কোড ডিবাগ করার জন্য উপযোগী, কারণ ব্রাউজার আপনার ফলাফলকে একটি পঠনযোগ্য বিন্যাসে সরাসরি রেন্ডার করতে পারে। আপনি google.visualization.Query অবজেক্ট ব্যবহার করে একটি HTML প্রতিক্রিয়ার জন্য একটি প্রশ্ন পাঠাতে পারবেন না। আপনাকে অবশ্যই কাস্টম কোড ব্যবহার করে একটি HTML প্রতিক্রিয়ার জন্য একটি ক্যোয়ারী করতে হবে, অথবা আপনার ব্রাউজারে এটির অনুরূপ একটি URL টাইপ করে:

অনুরোধ

http://www.example.com/mydatasource?tqx=reqId:1;out:html

প্রতিক্রিয়া

<html><body><table border='1' cellpadding='2' cellspacing='0'><tr style='font-weight: bold; background-color: #aaa;'><td>label 1</td><td>label 2</td></tr><tr bgcolor='#f0f0f0'><td align='right'>1</td><td>a</td></tr><tr bgcolor='#ffffff'><td align='right'>2</td><td>b</td></tr><tr bgcolor='#f0f0f0'><td align='right'>3</td><td>c</td></tr><tr bgcolor='#ffffff'><td align='right'>4</td><td>d</td></tr></table></body></html>

উদাহরণ

এখানে কিছু উদাহরণ অনুরোধ এবং প্রতিক্রিয়া আছে. নোট করুন যে অনুরোধগুলি url-এস্কেপ করা হয়নি; যেটি সাধারণত ব্রাউজার বা google.visualization.Query অবজেক্ট দ্বারা করা হয়।

সহজ অনুরোধ : তিনটি কলাম, চার সারি টেবিল সহ মৌলিক তথ্য প্রদান করে।

Request:
http://www.example.com/mydatasource

Response
google.visualization.Query.setResponse({version:'0.6',reqId:'0',status:'ok',sig:'5982206968295329967',table:{cols:[{id:'Col1',label:'',type:'number'},{id:'Col2',label:'',type:'number'},{id:'Col3',label:'',type:'number'}],rows:[{c:[{v:1.0,f:'1'},{v:2.0,f:'2'},{v:3.0,f:'3'}]},{c:[{v:2.0,f:'2'},{v:3.0,f:'3'},{v:4.0,f:'4'}]},{c:[{v:3.0,f:'3'},{v:4.0,f:'4'},{v:5.0,f:'5'}]},{c:[{v:1.0,f:'1'},{v:2.0,f:'2'},{v:3.0,f:'3'}]}]}});

একটি প্রতিক্রিয়া হ্যান্ডলারের সাথে সহজ অনুরোধ: একটি তিনটি কলাম, বিভিন্ন ডেটা প্রকার সহ তিনটি সারি সারণী প্রদান করে৷

Request:
http://www.example.com/mydatasource?tqx=responseHandler:myHandlerFunction

Response
myHandlerFunction({version:'0.6',reqId:'0',status:'ok',sig:'4641982796834063168',table:{cols:[{id:'A',label:'NEW A',type:'string'},{id:'B',label:'B-label',type:'number'},{id:'C',label:'C-label',type:'datetime'}],rows:[{c:[{v:'a'},{v:1.0,f:'1'},{v:new Date(2008,1,28,0,31,26),f:'2/28/08 12:31 AM'}]},{c:[{v:'b'},{v:2.0,f:'2'},{v:new Date(2008,2,30,0,31,26),f:'3/30/08 12:31 AM'}]},{c:[{v:'c'},{v:3.0,f:'3'},{v:new Date(2008,3,30,0,31,26),f:'4/30/08 12:31 AM'}]}]}});

একটি সাধারণ ক্যোয়ারী স্ট্রিং সহ ক্যোয়ারী: একটি একক কলামের জন্য অনুরোধ, চারটি সারি সহ একটি একক কলাম প্রদান করে৷

Request:
http://www.example.com/mydatasource?tq=select Col1

Response:
google.visualization.Query.setResponse({version:'0.6',reqId:'0',status:'ok',sig:'6099996038638149313',table:{cols:[{id:'Col1',label:'',type:'number'}],rows:[{c:[{v:1.0,f:'1'}]},{c:[{v:2.0,f:'2'}]},{c:[{v:3.0,f:'3'}]},{c:[{v:1.0,f:'1'}]}]}});

ডেটা পরিবর্তিত হয়নি ত্রুটি: একটি not_modified ত্রুটির উদাহরণ।

Request:
http://www.example.com/mydatasource?tqx=reqId:0;sig:4641982796834063168

Response:
google.visualization.Query.setResponse({version:'0.6',reqId:'0',status:'error',errors:[{reason:'not_modified',message:'Data not modified'}]});

ডেটা ট্রাঙ্কেটেড সতর্কতা: একটি data_truncated সতর্কতার উদাহরণ। লক্ষ্য করুন যে অনুরোধটি এখনও ডেটা প্রদান করে।

Request:
http://www.example.com/mydatasource?tq=limit 1

Response:
google.visualization.Query.setResponse({version:'0.6',reqId:'0',status:'warning',warnings:[{reason:'data_truncated',message:'Retrieved data was truncated'}],sig:'1928724788649668508',table:{cols:[{id:'A',label:'NEW A',type:'string'},{id:'B',label:'B-label',type:'number'},{id:'C',label:'C-label',type:'datetime'}],rows:[{c:[{v:'a'},{v:1.0,f:'1'},{v:new Date(2008,1,28,0,31,26),f:'2/28/08 12:31 AM'}]}]}});

অ্যাক্সেস অস্বীকার ত্রুটি: একটি access_denied ত্রুটির উদাহরণ।

Request:
http://www.example.com/mydatasource

Response:
google.visualization.Query.setResponse({version:'0.6',reqId:'0',status:'error',errors:[{reason:'access_denied',message:'Access denied',detailed_message:'Access Denied'}]});

অবৈধ ক্যোয়ারী স্ট্রিং: একটি অবৈধ ক্যোয়ারী স্ট্রিং সহ একটি অনুরোধের উদাহরণ৷ মনে রাখবেন যে বিস্তারিত বার্তাটি প্রকৃত ত্রুটি বার্তার পরিবর্তে একটি সাধারণ বার্তা।

Request:
http://www.example.com/mydatasource?tq=select A

Response:
google.visualization.Query.setResponse({version:'0.6',reqId:'0',status:'error',errors:[{reason:'invalid_query',message:'Invalid query',detailed_message:'Bad query string.'}]});

ডেভেলপমেন্ট টুলস

  • জাভা ডেটাসোর্স লাইব্রেরি (গুগল থেকে) - অনুরোধ এবং প্রতিক্রিয়া পরিচালনা করে, আপনার দেওয়া ডেটা থেকে প্রতিক্রিয়া সারণী তৈরি করে এবং Google চার্ট টুল SQL ক্যোয়ারী ভাষা প্রয়োগ করে।
  • পাইথন ডেটাসোর্স লাইব্রেরি (গুগল থেকে) - একটি প্রতিক্রিয়া টেবিল তৈরি করে প্রতিক্রিয়া সিনট্যাক্স তৈরি করে। অনুরোধ পার্সিং বা Google চার্ট টুল SQL ক্যোয়ারী ভাষা বাস্তবায়ন পরিচালনা করে না
  • MC-Google_Visualization (থার্ড-পার্টি) - এটি একটি PHP সার্ভার-সাইড লাইব্রেরি যা আপনি PDO ব্যবহার করে MySQL, SQLite, এবং PostgreSQL ডাটাবেস ইঞ্জিনগুলির জন্য একটি চার্ট টুলস ডেটাসোর্স বাস্তবায়ন করতে ব্যবহার করতে পারেন।
  • bortosky-google-visualization (থার্ড-পার্টি) - এটি .NET ব্যবহারকারীদের জন্য একটি Google ভিজ্যুয়ালাইজেশন API ডেটাটেবল তৈরি করার জন্য একটি সহায়ক লাইব্রেরি।
  • জিভি স্ট্রীমার (থার্ড-পার্টি) - জিভি স্ট্রীমার হল একটি সার্ভার-সাইড টুল যা বিভিন্ন উৎস থেকে ডেটাকে Google চার্টে বৈধ ক্যোয়ারী রেসপন্সে রূপান্তর করতে পারে। জিভি স্ট্রীমার বেশ কয়েকটি ভাষা (উদাহরণস্বরূপ, পিএইচপি, জাভা, .নেট) এবং বেশ কয়েকটি কাঁচা ডেটা উত্স (উদাহরণস্বরূপ, মাইএসকিউএল) সমর্থন করে।
  • TracGViz (তৃতীয়-পক্ষ) - TracGViz হল একটি বিনামূল্যের এবং ওপেন সোর্স টুল যা উপাদানগুলি প্রদান করে যাতে Trac চার্ট গ্যাজেটগুলি ব্যবহার করতে সক্ষম হবে এবং সেইসাথে Google চার্ট টুলস ডেটাসোর্স উৎস হিসাবে Trac দ্বারা পরিচালিত ডেটা প্রয়োগ করতে সক্ষম হবে৷
  • ভিস-টেবিল (তৃতীয়-পক্ষ) - একটি লাইব্রেরি যা পিএইচপি-তে Google চার্ট টুলস ডেটাসোর্স বাস্তবায়ন করে। এর তিনটি প্রধান অংশ রয়েছে। ডেটাটেবল বাস্তবায়ন নিজেই, ক্যোয়ারী ভাষা পার্সার, এবং ফর্ম্যাটার্স।
  • Oracle PL/SQL (থার্ড-পার্টি)-এ Google ডেটাসোর্স ইমপ্লিমেন্টেশন - একটি Oracle PL/SQL প্যাকেজ যা ডাটাবেস থেকে সরাসরি ডেটা সোর্স সার্ভারে ওরাকলকে সক্ষম করে। তাই মূলত আপনি Google চার্ট টুলস ডেটাসোর্স হিসাবে যেকোন ওরাকল কোয়েরি ব্যবহার করতে পারেন (প্যাকেজটি ডেটা সহ একটি JSON ফাইল ফিরিয়ে দেবে)। এটি গুগল কোয়েরি ভাষার জন্য প্রায় সম্পূর্ণ সমর্থন করে।