مرجع لغة طلب البحث (الإصدار 0.7)

تتيح لك لغة استعلام واجهة برمجة تطبيقات Google Visualization API إجراء عمليات معالجة متنوعة للبيانات مع الاستعلام على مصدر البيانات.

جدول المحتويات

المقدمة

عادةً ما تتوقع التصورات البيانات بشكل معين. على سبيل المثال، قد يتوقع المخطط الدائري البيانات كعمودين: تسمية نصية وقيمة رقمية. قد لا تتطابق البيانات الموجودة في مصدر البيانات تمامًا مع هذا الهيكل. على سبيل المثال، قد يحتوي مصدر البيانات على أكثر من عمودين، أو قد لا يتطابق ترتيب الأعمدة مع الترتيب المتوقع في المخطط الدائري.

توفر لغة الاستعلام إمكانية إرسال طلبات معالجة البيانات وتنسيقها إلى مصدر البيانات والتأكد من تطابق بنية البيانات المعروضة ومحتواها مع البنية المتوقعة.

بناء جملة لغة الاستعلام مشابه لـ SQL. يجب أن يكون المطورون على دراية بـ SQL قادرين على تعلم لغة الاستعلام هذه واستخدامها بسرعة. هناك العديد من برامج SQL التعليمية المتاحة على الويب. هناك بعض الاختلافات بين لغة طلب البحث هذه وSQL الموضحة في قسم syntax.

يُرجى العِلم أنّ مصادر البيانات ليست مطلوبة لتطبيق لغة طلب البحث، وإذا كانت كذلك، يتم تنفيذ جميع ميزات اللغة. ما لم يكن لديك سبب للاعتقاد خلاف ذلك، يجب ألا تعتمد على مصدر بيانات لتنفيذ جميع الميزات لهذه اللغة.

استخدام لغة طلب البحث

يمكنك إرفاق سلسلة طلب بحث بطلب مصدر بيانات بطريقتَين، هما: ضبط سلسلة طلب البحث من داخل رمز JavaScript أو من خلال ضبط سلسلة طلب البحث كمَعلمة في عنوان URL لمصدر البيانات. إذا كان طلبك لا يتضمّن سلسلة طلب بحث، سيكون السلوك التلقائي لمصدر البيانات هو عرض جميع الصفوف والأعمدة باستخدام الترتيب والتنسيق التلقائيَين للصفوف/الأعمدة. يمكنك تغيير ذلك من خلال تضمين سلسلة طلب بحث في طلبك إلى مصدر بيانات.

ضبط طلب البحث من JavaScript

لضبط سلسلة طلب البحث من داخل رمز JavaScript، يمكنك استدعاء طريقة setQuery للفئة google.visualization.Query.

var query = new google.visualization.Query(DATA_SOURCE_URL);
query.setQuery('select dept, sum(salary) group by dept');
query.send(handleQueryResponse);

إعداد طلب البحث في عنوان URL لمصدر البيانات

يمكن إضافة سلسلة طلب البحث إلى عنوان URL لمصدر البيانات باستخدام المَعلمة tq. يتيح لك ضبط طلب البحث في معلَمة عنوان URL بدلاً من JavaScript استخدام الرسوم البيانية التي كتبها مطورون آخرون بسهولة، وسيظلّ بإمكانك تخصيص طلب البحث.

يجب ترميز سلسلة طلب البحث بشكل صحيح كمَعلمة عنوان URL. يمكنك ترميز عنوان URL باستخدام وظيفة encodeURIComponent في JavaScript، أو يمكنك ترميزه يدويًّا باستخدام أداة الترميز في نهاية هذا القسم.

مثال:

ضع في الاعتبار سلسلة الاستعلام التالية لجدول بيانات Google. (ملاحظة: تكون معرّفات الأعمدة في جداول البيانات دائمًا عبارة عن أحرف، ويكون نص عناوين الأعمدة المعروض في جدول البيانات المنشور عبارة عن تصنيفات وليس أرقام تعريف.) وعليك استخدام المعرّف، وليس التصنيف، في سلسلة طلب البحث).

select A, sum(B) group by A

عند ترميز الطلب، يصبح هذا الطلب:

select%20A%2C%20sum(B)%20group%20by%20A

لنفترض أنّ هذا هو عنوان URL لجدول البيانات:

https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4

أضف /gviz/tq?tq=YOUR_QUERY_STRING إلى عنوان URL لجدول البيانات للحصول على سلسلة طلب البحث النهائية:

https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4/gviz/tq?tq=select%A%2C%20sum(B)%20group%20by%20A

استخدِم الأداة أدناه لترميز سلسلة طلب بحث أو فك ترميزها:

ملاحظة: يتطلب الوصول إلى بيانات جداول البيانات الخاصة تمرير بيانات اعتماد صريحة حول التفويض باستخدام بروتوكول OAuth. يمكنك الاطّلاع على قسم جداول بيانات Google: التفويض للحصول على مزيد من التفاصيل.

بنية اللغة

نظرة عامة

تم تصميم بناء جملة لغة استعلام واجهة برمجة تطبيقات Google Visualization على غرار بناء جملة SQL. ومع ذلك، فهي مجموعة فرعية من SQL، مع بعض الميزات الخاصة بها والتي ستحتاج إلى تعلمها. إذا كنت على دراية بـ SQL، فلن يكون من الصعب جدًا تعلمه.

جداول البيانات

يستخدم هذا المستند مصطلح جدول البيانات للإشارة إلى مجموعة نتائج طلب بحث. يتكون جدول البيانات من صفوف وأعمدة. يحتوي كل عمود في جدول البيانات على السمات التالية:

  • المعرّف (أو رقم تعريف العمود). يُستخدَم للإشارة إلى أعمدة ضمن طلب البحث. ويُرجى العِلم بأنّه يجب عدم محاولة الإشارة مطلقًا إلى عمود حسب التصنيف في طلب بحث، بل من خلال المعرّف فقط. ملاحظة: حاوِل عدم استخدام أي معرّفات تتضمّن مسافات، لأن من الصعب إدارة المسافات، وقد تجعل الأخطاء صغيرة ولكن يصعب العثور عليها في الترميز. بالإضافة إلى ذلك، يجب أن يكون المعرّف الذي يتضمن مسافات محاطًا بعلامتَي اقتباس للخلف.
  • التصنيف: تمثّل هذه السمة string يتم عرضه عادةً للمستخدمين النهائيين. على سبيل المثال، كوسيلة إيضاح داخل مخطط دائري أو عنوان عمود في جدول.
  • نوع البيانات: تشمل أنواع البيانات المتوافقة string وnumber وboolean وdate وdatetime وtimeofday. سيكون لجميع قيم العمود نوع بيانات يتطابق مع نوع العمود أو قيمة null. وهذه الأنواع شبيهة بأنواع JavaScript، ولكنها ليست متطابقة، كما هي موضّحة في قسم الكتابات الأدبية في هذه الصفحة.
  • نمط التنسيق: يمكن لمصدر البيانات تحديد أنماط التنسيق لبعض أعمدته أو جميعها. يمكنك إلغاء هذا النمط من خلال تضمين فقرة تنسيق.

الجدول في جميع الأمثلة:

في هذا القسم، تشير جميع أمثلة الاستعلامات إلى الجدول التالي. رؤوس الأعمدة هي معرّفات الأعمدة.

اسم
string
قسم
string
lunchTime
timeofday
الراتب
number
hireDate
date
العمر
number
isSenior
boolean
seniorityStartTime
datetime
Johnرمز الحرف Eng12:00:00
1,000
2005-03-1935صحيح2007-12-02 15:56:00
ديفرمز الحرف Eng12:00:00
500
2006-04-1927falsenull
ساليرمز الحرف Eng13:00:00
600
2005-10-1030falsenull
بنالمبيعات12:00:00
400
2002-10-1032صحيح2005-03-09 12:30:00
داناالمبيعات12:00:00
350
2004-09-0825falsenull
مايكMarketing13:00:00
800
2005-01-1024صحيح2007-12-30 14:40:00

بنود اللغة

يتكون بناء جملة لغة الاستعلام من العبارات التالية. وتبدأ كل عبارة بكلمة رئيسية واحدة أو اثنتين. وجميع العبارات اختيارية. يتم فصل البنود بمسافات. يجب أن يكون ترتيب الجمل على النحو التالي:

عبارة الاستخدام
select تختار الأعمدة التي سيتم عرضها والترتيب الذي ستظهر به. وفي حال حذفها، يتم عرض جميع أعمدة الجدول بترتيبها التلقائي.
where لا تعرض سوى الصفوف التي تتطابق مع شرط. وفي حال حذفها، يتم عرض جميع الصفوف.
group by وتجمع القيم عبر الصفوف.
pivot تحوِّل القيم المميزة في الأعمدة إلى أعمدة جديدة.
order by لترتيب الصفوف حسب القيم في الأعمدة.
limit تحدد هذه السمة عدد الصفوف التي يتم عرضها.
offset تتخطى عددًا معينًا من الصفوف الأولى.
label لضبط تسميات الأعمدة.
format لتنسيق القيم في أعمدة معيّنة باستخدام أنماط تنسيق معيّنة.
options لضبط خيارات إضافية.
from تمت إزالة عبارة from من اللغة.

 

اختيار

تُستخدم عبارة select لتحديد الأعمدة المراد إرجاعها وترتيبها. إذا لم يتم تحديد هذه العبارة أو في حال استخدام select *، سيتم عرض جميع أعمدة جدول مصدر البيانات بترتيبها الأصلي. تتم الإشارة إلى الأعمدة بواسطة المعرّفات (وليس بواسطة التصنيفات). على سبيل المثال، في جدول بيانات Google، معرفات الأعمدة هي حرف العمود الذي يحتوي على حرف واحد أو حرفين (A، B، C، ...).

يمكن أن تكون العناصر في عبارة select معرّفات أعمدة أو نتائج دوال التجميع أو الدوال العددية أو عوامل التشغيل.

أمثلة:

select *
select dept, salary
select max(salary)

في المثال التالي، تُستخدم علامات الاقتباس الخلفية للإشارة إلى معرّفات الأعمدة التي تحتوي على مسافات (عنوان البريد الإلكتروني) أو كلمات محجوزة (تاريخ):

select `email address`, name, `date`

جارٍ تشغيل طلب البحث التالي على مثال للجدول:

select lunchTime, name

عرض الرد التالي:

lunchTime الاسم
12:00:00John
12:00:00ديف
13:00:00سالي
12:00:00بن
12:00:00دانا
13:00:00مايك

المكان

تُستخدم عبارة where لإرجاع الصفوف التي تطابق شرطًا محددًا فقط.

عوامل تشغيل المقارنة البسيطة هي <=, <, >, >=, =, !=, <>. وكلا عاملَي المقارنة != <> يعنيان "غير متساوي". تتم مقارنة السلاسل حسب القيمة المعجمية. يُرجى العِلم بأنّ المساواة يُشار إليها من خلال =، وليس == كما هو الحال في معظم لغات الكمبيوتر. ويتم إجراء المقارنة مع null باستخدام is null أو is not null.

يمكنك ربط شروط متعدّدة باستخدام عوامل التشغيل المنطقية and وor وnot. يمكن استخدام الأقواس لتحديد الأسبقية الصريحة.

تدعم عبارة where أيضًا بعض عوامل مقارنة السلاسل الأكثر تعقيدًا. ويتم استخدام سلسلتَين كوسيطات، أي أن أي وسيطات ليست سلسلة (مثل التواريخ أو الأرقام) سيتم تحويلها إلى سلاسل قبل المقارنة. إنّ مطابقة السلاسل حسّاسة لحالة الأحرف (يمكنك استخدام الدوال العددية upper() أو lower() لحلّ هذه المشكلة).

  • contains - مطابقة سلسلة فرعية. يكون الكامل contains الجزء صحيحًا إذا كان الجزء في أي مكان داخل الكامل. مثال: تتطابق السمة where name contains 'John' مع "John" و"John Adams" و"Long John Silver" ولكن ليس "john adams".
  • starts with - مطابقة بادئة. تكون القيمة starts with البادئة صحيحة إذا كانت البادئة في بداية القيمة. أمثلة: تتطابق السمة where dept starts with 'engineering' مع "المديرون الهندسيون" و"المدراء الهندسيون". يتطابق where dept starts with 'e' مع "هندسة" و"هندسة" و"هـ".
  • ends with - مطابقة لاحقة. تكون القيمة ends with اللاحقة صحيحة إذا كانت اللاحقة في نهاية القيمة. مثال: تتطابق السمة where role ends with 'y' مع عبارات "راعي البقر" و"ولد" و"y".
  • matches - تطابق التعبير العادي A (preg) . haystack matches needle يكون صحيحًا إذا كان التعبير العادي في needle يطابق haystack. أمثلة: تتطابق السمة where country matches '.*ia' مع الهند ونيجيريا، ولكن لا تتطابق مع إنديانا. يُرجى العِلم أنّ هذا البحث ليس عالميًا، لذلك لن يطابق where country matches 'an' كلمة "كندا".
  • like - بحث نصي متوافق مع حرفَي بدل: %، حيث يتطابق مع صفر أو أكثر من الأحرف من أي نوع، و_ (شرطة سفلية)، التي تتطابق مع أي حرف واحد. يشبه هذا عامل التشغيل SQL LIKE. مثال: تتطابق السمة where name like fre% مع 'fre' و'fred' و 'freddy'.

أمثلة:

where salary >= 600
where dept != 'Eng' and date '2005-01-21' < hireDate
where (dept<>'Eng' and isSenior=true) or (dept='Sales') or seniorityStartTime is null

جارٍ تشغيل طلب البحث التالي على مثال للجدول:

select name where salary > 700

عرض الرد التالي:

الاسم
John
مايك

التجميع حسب

تُستخدم عبارة group by لتجميع القيم في الصفوف. يتم إنشاء صف واحد لكل مجموعة مميزة من القيم في عبارة تجميع حسب. يتم فرز البيانات تلقائيًا حسب أعمدة التجميع، ما لم يتم تحديد خلاف ذلك باستخدام عبارة order by.

ملاحظة: إذا كنت تستخدم عبارة group by، يجب إما إدراج كل عمود مُدرَج في عبارة select في عبارة group by أو أن يتضمّن دالة تجميع.

أمثلة:

select dept, max(salary) group by dept

جارٍ تشغيل طلب البحث التالي على مثال للجدول:

select lunchTime, avg(salary), count(age) group by isSenior,lunchTime

عرض الرد التالي:

lunchTime متوسط الراتب عمر العدد
12:00:00 425 2
13:00:00 600 1
12:00:00 700 2
13:00:00 800 1

المحوري

تُستخدم عبارة pivot لتحويل القيم المميزة في الأعمدة إلى أعمدة جديدة. على سبيل المثال، عند إجراء محور حول عمود "السنة"، يتم إنشاء جدول يحتوي على عمود لكل سنة مختلفة يظهر في الجدول الأصلي. قد يكون هذا الإجراء مفيدًا إذا كان الرسم البياني الخطي يرسم مثلاً كل عمود كخط منفصل. إذا كنت تريد رسم خط منفصل لكل عام، وكانت القيمة "year" هي أحد أعمدة الجدول الأصلي، من بين الخيارات الجيدة هنا استخدام عملية محورية لإجراء عملية تحويل البيانات اللازمة.

ملاحظة: إذا كنت تستخدم عبارة pivot، يجب أن يكون كل عمود مُدرَج في عبارة select إما مدرَجًا في عبارة group by أو أن يتضمّنه دالة تجميع.

وبما أنّ عدة صفوف قد تحتوي على القيم نفسها للأعمدة المحورية، يتضمن المحور المحوري عملية تجميع البيانات. يُرجى العلم أنّه عند استخدام السمة pivot بدون استخدام السمة group by، سيحتوي جدول النتائج على صف واحد فقط. على سبيل المثال، تشغيل طلب البحث التالي على مثال للجدول:

select sum(salary) pivot dept

عرض الرد التالي:

الراتب الإجمالي الهندسي مجموع رواتب التسويق مجموع رواتب المبيعات
2100 800 750

وذلك لأن الرقم 2100 هو مجموع رواتب قسم الهندسة و800 لقسم التسويق وغير ذلك.

قد يكون استخدام pivot مع group by أكثر فائدة، لأنّه ينشئ جدولاً تحتوي فيه كل خلية على نتيجة التجميع للصف ذي الصلة والعمود ذي الصلة. على سبيل المثال، تشغيل طلب البحث التالي على مثال للجدول:

select dept, sum(salary)
  group by dept
  pivot lunchTime

عرض الرد التالي:

قسم 12:00:00 مجموع الراتب 13:00:00 مجموع الراتب
رمز الحرف Eng 1500 600
Marketing null 800
المبيعات 750 null

يمكنك أيضًا "قلب" هذا الجدول وتبديل الأعمدة والصفوف من خلال التبديل بين أعمدة pivot وأعمدة group by. جارٍ تنفيذ طلب البحث التالي على مثال للجدول:

select lunchTime, sum(salary)
  group by lunchTime
  pivot dept

عرض الرد التالي:

lunchTime الراتب الإجمالي الهندسي مجموع رواتب التسويق مجموع رواتب المبيعات
12:00:00 1500 null 750
13:00:00 600 800 null

يمكنك أيضًا استخدام أكثر من عمود في عبارة pivot. وفي هذه الحالة، تتكون أعمدة جدول الاستجابة من كل المجموعات الفريدة من القيم في الأعمدة الموجودة في الجدول الأصلي. على سبيل المثال، تشغيل طلب البحث التالي على أمثلة الجدول:

select sum(salary)
  pivot dept, lunchTime

عرض الرد التالي:

باللغة الإنجليزية، 12:00:00 مجموع الراتب باللغة الإنجليزية، 13:00:00 مجموع الراتب التسويق،13:00:00 مجموع الراتب المبيعات،12:00:00 الراتب الإجمالي
1500 600 800 750

يُرجى العلم أنّ المجموعات التي تظهر في الجدول الأصلي هي فقط التي يتم منحها أعمدة في جدول الردود. لهذا السبب، لا يوجد عمود لـ Marketing,12:00:00 أو قسم Sales,13:00:00.

ويمكن أيضًا استخدام أكثر من تجميع. على سبيل المثال، تشغيل طلب البحث التالي على مثال للجدول:

select sum(salary), max(lunchTime)
  pivot dept

عرض الرد التالي:

الراتب الإجمالي الهندسي مجموع رواتب التسويق مجموع رواتب المبيعات إنجليزية الحد الأقصى لوقت الغداء الحد الأقصى لوقت الغداء في التسويق الحد الأقصى لوقت الغداء للمبيعات
2100 800 750 13:00:00 13:00:00 12:00:00

يمكنك دمج عدة عمليات تجميع في عبارة select وأعمدة متعددة في الفقرة group by وأعمدة متعددة في عبارة pivot. داخليًا، يتم التجميع من خلال تسلسل الأعمدة في المجموعة حسب العبارات المحورية.

قد لا تظهر الأعمدة المحدّدة في الفقرة pivot في البند select أو group by أو order by. عند استخدام pivot، لا يمكن أن تحتوي العبارة order by على أي أعمدة تجميع. وسبب ذلك هو أنّه لكل عملية تجميع محدّدة في عبارة select، يتم إنشاء العديد من الأعمدة في جدول النتائج. ويمكنك تنسيق أعمدة التجميع عند استخدام pivot. وتكون نتيجة هذا التنسيق أن جميع الأعمدة الجديدة ذات الصلة بالتجميع المحدد والتي يتم إنشاؤها من خلال العملية المحورية يتم تنسيقها وفقًا للنمط المحدد. في المثال أعلاه، ستؤثّر إضافة format sum(salary) "some_format_string" في الأعمدة التالية: الراتب الإجمالي الهندسي ورواتب التسويق الإجمالية ورواتب المبيعات الإجمالية.

يمكنك تصنيف أعمدة التجميع. إذا لم يتم تحديد أي تصنيف في عبارة label، يتألف تصنيف العمود الذي يتم إنشاؤه نتيجة التمحور من قائمة القيم في الأعمدة المحورية، ونوع التجميع (الحد الأدنى، والحد الأقصى، والمجموع،...) وتصنيف العمود المجمّع. على سبيل المثال "Eng,12:00:00 sumary". إذا تم تحديد تجميع واحد فقط في عبارة select، ستتم إزالة جزء التجميع من التصنيف، وسيتم فقط الاحتفاظ بقائمة القيم في الأعمدة المحورية. على سبيل المثال "Eng,12:00:00". عندما تحدّد عبارة label تصنيفًا لعمود تجميع، يتم إلحاق التصنيف المطلوب بقائمة القيم، سواء كان هناك تجميع واحد فقط في عبارة select أو أكثر من تجميع. على سبيل المثال، سيؤدي label sum(salary) "sumsal" إلى ظهور تصنيفات الأعمدة "Eng,12:00:00 sumsal" و"Eng,13:00:00 sumsal" وما إلى ذلك.

الطلب حسب

تُستخدم عبارة order by لترتيب الصفوف حسب القيم الموجودة في أعمدة محددة.

يمكن أن تكون العناصر في عبارة order by معرّفات أعمدة أو نتائج دوال التجميع أو الدوال العددية أو عوامل التشغيل.

أمثلة:

order by dept, salary desc
select dept, max(salary) group by dept order by max(salary)

الحدّ الأقصى المسموح به

يتم استخدام عبارة limit للحدّ من عدد الصفوف المعروضة.

مثال:

limit 100

الإزاحة

تُستخدم عبارة offset لتخطي عدد معيّن من الصفوف الأولى. في حال استخدام عبارة limit، يتم تطبيق offset أولاً: على سبيل المثال، تعرض limit 15 offset 30 الصفوف من 31 إلى 45.

أمثلة:

offset 10
limit 30 offset 210

التصنيف

تُستخدَم العبارة label لضبط التصنيف لعمود واحد أو أكثر. وتجدر الإشارة إلى أنّه لا يمكنك استخدام قيمة تصنيف بدلاً من معرّف في طلب بحث.

يمكن أن تكون العناصر في عبارة label معرّفات أعمدة أو نتائج دوال التجميع أو الدوال العددية أو عوامل التشغيل.

البنية:

label column_id label_string [,column_id label_string]
column_id
معرّف العمود الذي يتم تخصيص التصنيف له.
label_string
التصنيف المطلوب تعيينه لهذا العمود. تستخدم العديد من العروض المرئية تصنيف العمود كنص لعرضه للمستخدم النهائي، مثل تصنيف وسيلة الإيضاح في رسم بياني دائري. التصنيفات هي أحرف حرفية للسلسلة، تتّبع قواعد البنية هذه.

مثال:

يحدّد المثال التالي تصنيف عمود القسم على "Department" (قسم)، وتصنيف عمود الاسم على "Employee Name" (اسم الموظف)، وتصنيف عمود الموقع الجغرافي على "Employee Location" (موقع الموظف):

label dept 'Department', name "Employee Name", location 'Employee Location'

التنسيق

تُستخدم عبارة format لتحديد قيمة منسَّقة للخلايا في عمود واحد أو أكثر. يجب أن تتضمن البيانات المعروضة قيمة فعلية وقيمة منسَّقة لكل خلية في عمود منسق. تستخدم العديد من التصورات القيمة غير المنسقة للعمليات الحسابية، ولكن القيمة المنسقة للعرض. عادةً ما يتم عرض الأنماط التي تحدّدها في هذه العبارة في خاصية pattern للأعمدة المقابلة.

بنية النمط:

number وdate وtimeofday وdatetime
نمطا التاريخ والرقم اللذَين يحدّدهما ICU.
boolean
النمط هو string بالتنسيق "value-if-true:value-if-false".

مثال:

format salary '#,##0.00', hireDate 'dd-MMM-yyyy', isSenior 'Yes!:Not yet'

 

الخيارات

تُستخدم عبارة options للتحكم في الخيارات الإضافية لتنفيذ طلب البحث. في ما يلي الكلمات الرئيسية التي يمكن أن تتّبع عبارة options:

  • no_format تزيل القيم المنسّقة من النتيجة، وتترك القيم الأساسية فقط. يمكن استخدامه عندما لا يستخدم التمثيل البصري المحدّد القيم المنسّقة لتقليل حجم الاستجابة.
  • no_values تزيل القيم الأساسية من النتيجة، وتترك القيم المنسّقة فقط. ويمكن استخدامه عندما يستخدم التمثيل البصري المحدّد القيم المنسّقة فقط لتقليل حجم الاستجابة.

دوال معالجة البيانات

تتوفر عدة أنواع من العوامل والدوال التي تتيح لك معالجة البيانات أو تجميعها في عمود واحد، أو مقارنة البيانات أو دمجها في الأعمدة. وتشمل الأمثلة sum() (لإضافة جميع القيم في عمود) وmax (للعثور على أكبر قيمة في العمود) و+ (لإضافة قيم عمودَين معًا في الصف نفسه).

يمكن أن تظهر بعض الدوال في أي عبارة، وقد يظهر بعضها في مجموعة فرعية من العبارات. تم توثيق ذلك أدناه.

مثال:

بالنظر إلى هذا الجدول... إذا طبقنا طلب البحث هذا... نحصل على هذه النتيجة.
الاسم الرواتب ضريبة StartDate
CANNOT TRANSLATE 1,000 100 2009/1/1
حيوي 2,000 200 2008/1/21
Moran 3,000 300 2008/2/12
select upper(name), year(startDate)
الاسم السنة(تاريخ البدء)
أفقي 2008
موران 2008
شارون 2009

 

يتم تحديد دوال معالجة البيانات التالية من خلال لغة طلب بحث Google Visualization API:

 

دوال التجميع

تمرر دوال التجميع سمة identifier في عمود واحد وتنفّذ إجراءً على جميع القيم في كل مجموعة (يتم تحديد المجموعات من خلال العبارتين group by أو pivot أو جميع الصفوف في حال عدم استخدام هاتين العبارتين).

أمثلة:

select max(salary)               // Returns a table with one column and one row.
select max(salary) group by dept // Returns a table with the max salary for each dept column value.
select max(salary) pivot dept    // Returns a one-row table with a column for each dept,
                                 //   and the max salary for that department.

يمكن استخدام دوال التجميع في العبارات select وorder by وlabel وformat. ولا يمكن أن تظهر في فقرات where أو group by أو pivot أو limit أو offset أو options.

في ما يلي دوال التجميع المتاحة:

الاسم الوصف أنواع الأعمدة المسموح بها نوع القيمة التي يتم عرضها
avg() تعرض القيمة المتوسطة لجميع القيم في العمود لمجموعة. number number
count() تعرض عدد العناصر في العمود المحدّد لمجموعة. ولا يتم احتساب الخلايا الخالية. أي نوع number
max() تعرض القيمة القصوى في العمود لمجموعة. تتم مقارنة التواريخ بالتواريخ السابقة التي تكون أصغر حجمًا، مقارنةً بالتواريخ string أبجديًا مع الحساسية لحالة الأحرف. أي نوع نوع العمود نفسه
min() تعرض القيمة الصغرى في العمود لمجموعة. تتم مقارنة التواريخ بالتواريخ السابقة التي تكون أصغر، بينما تتم مقارنة string أبجديًا، مع مدى حساسية حالة الأحرف. أي نوع نوع العمود نفسه
sum() تعرض مجموع كل القيم في العمود لمجموعة. number number

ملاحظة: يمكن لدوال التجميع استخدام معرّف عمود فقط كوسيطة:

max(startDate)                      // OK
min(firstScore) + min(secondScore)  // OK
max(year(startDate))                // INVALID. max requires column ID
sum(salary + perks)                 // INVALID. sum requires column ID.

الدوال العددية

تعمل الدوال العددية على صفر أو أكثر من معلَمات لإنتاج قيمة أخرى. يمكن تمرير الدوال العددية أي تعبير يتم تقييمه إلى معلَمة النوع المناسب. يُرجى العِلم أنّ هذه الأنواع هي الأنواع المحدّدة في قسم الحرفيات ضمن هذا المستند، وهي قد تختلف قليلاً عن كائنات JavaScript التي تحمل أسماء متشابهة.

يُرجى العِلم أنّه سيتم تغيير اسم العمود من خلال إحاطته بدالة عددية.

يمكن استخدام الدوال العددية كمَعلمة، أي قيمة يتم تقييمها إلى قيمة واحدة:

year(max(startDate))
datediff(now(), todate(1234567890000))

يمكن استخدام الدوال العددية في أي من العبارات التالية: select وwhere وgroup by وpivot وorder by وlabel, و format.

الاسم
year()

لعرض قيمة السنة من قيمة تاريخ أو قيمة تاريخ. على سبيل المثال: تعرض الدالة year(date "2009-02-05") القيمة 2009.

المَعلمات: مَعلمة واحدة من النوع date أو datetime
نوع الإرجاع: number
month()

لعرض قيمة الشهر المستندة إلى صفر من قيمة تاريخ أو تاريخ ووقت. على سبيل المثال: تعرض الدالة month(date "2009-02-05") القيمة 1. ملاحظة: تستند الأشهر إلى 0، وبالتالي تعرض الدالة 0 لشهر كانون الثاني (يناير)، وتعرض 1 شباط (فبراير) وما إلى ذلك.

المَعلمات: مَعلمة واحدة من النوع date أو datetime
نوع الإرجاع: number
day()

لعرض اليوم من الشهر من date أو قيمة تاريخ ووقت. على سبيل المثال: تعرض الدالة day(date "2009-02-05") القيمة 5.

المَعلمات: مَعلمة واحدة من النوع date أو datetime
نوع الإرجاع: number
hour()

لعرض قيمة الساعة من تاريخ ووقت أو قيمة timeofday. على سبيل المثال: تعرض الدالة hour(timeofday "12:03:17") القيمة 12.

المَعلمات: مَعلمة واحدة من النوع datetime أو timeofday
نوع الإرجاع: number
minute()

تعرض قيمة الدقيقة من قيمة datetime أو timeofday. على سبيل المثال: تعرض الدالة minute(timeofday "12:03:17") الرقم 3.

المَعلمات: مَعلمة واحدة من النوع datetime أو timeofday
نوع الإرجاع: number
second()

تعرض القيمة الثانية من قيمة datetime أو timeofday. على سبيل المثال: تعرض الدالة second(timeofday "12:03:17") القيمة 17.

المَعلمات: مَعلمة واحدة من النوع datetime أو timeofday
نوع الإرجاع: number
millisecond()

تعرض الجزء الملي ثانية من قيمة datetime أو timeofday. على سبيل المثال: تعرض الدالة millisecond(timeofday "12:03:17.123") القيمة 123.

المَعلمات: مَعلمة واحدة من النوع datetime أو timeofday
نوع الإرجاع: number
quarter()

عرض الربع من قيمة date أو datetime. على سبيل المثال: تعرض الدالة quarter(date "2009-02-05") القيمة 1. يُرجى العِلم أنّ الأرباع تستند إلى الرقم 1، أي أنّ الدالة تعرض 1 للربع الأول، و2 للربع الثاني، وما إلى ذلك.

المَعلمات: مَعلمة واحدة من النوع date أو datetime
نوع الإرجاع: number
dayOfWeek()

عرض يوم الأسبوع من قيمة date أو datetime. على سبيل المثال: تعرض الدالة dayOfWeek(date "2009-02-26") القيمة 5. يُرجى العلم أنّ الأيام تستند إلى 1، وبالتالي تعرض الدالة 1 للإشارة إلى الأحد، والقيمة 2 ليوم الاثنين وما إلى ذلك.

المَعلمات: مَعلمة واحدة من النوع date أو datetime
نوع الإرجاع: number
now()

تعرض قيمة تاريخ ووقت تمثل datetime الحالية في المنطقة الزمنية بتوقيت غرينيتش.

المَعلمات: ما مِن مَعلمات
نوع الإرجاع: datetime
dateDiff()

تعرض الفرق في الأيام بين قيمتين date أو datetime. ملاحظة: يتم استخدام أجزاء date من القيم فقط في العملية الحسابية، وبالتالي تعرض الدالة دائمًا قيمة عدد صحيح. على سبيل المثال: تعرض الدالة dateDiff(date "2008-03-13", date "2008-02-12") القيمة 29، وتعرض dateDiff(date "2009-02-13", date "2009-03-13") القيمة -29. يتم اقتطاع القيم الزمنية قبل المقارنة.

المَعلمات: مَعلمتان من النوع date أو datetime (يمكن أن تكون كلّ منهما واحدة)
نوع الإرجاع: number
toDate()

تحوِّل القيمة المقدَّمة إلى قيمة date.

  • فإذا كانت date، تعرض القيمة نفسها.
  • وبالتالي، يتم عرض الجزء date بناءً على datetime. على سبيل المثال: تعرض toDate(dateTime "2009-01-01 12:00:00") الرقم "2009-01-01".
  • بناءً على number N، تعرض الدالة date ن ملي ثانية بعد الحقبة. يتم تحديد Epoch على النحو التالي: 1,1970، الساعة 00:00:00 بتوقيت غرينيتش. على سبيل المثال: تعرض toDate(1234567890000) "2009-02-13".
المَعلمات: مَعلمة واحدة من النوع date أو datetime أو number
نوع الإرجاع: date
upper()

عرض string المحدد بأحرف كبيرة. على سبيل المثال: تعرض الدالة upper("foo") الأمر FOO.

المَعلمات: مَعلمة واحدة من النوع string
نوع الإرجاع: string
lower()

عرض string المحدد بأحرف صغيرة. على سبيل المثال: تعرض الدالة lower("Bar") القيمة "bar".

المَعلمات: مَعلمة واحدة من النوع string
نوع الإرجاع: string

العوامل الحسابية

يمكنك استخدام العوامل الحسابية لإجراء عمليات رياضية على أي عنصر يتم تقييمه لرقم واحد (أي ناتج الدوال التجميعية أو العوامل أو الثوابت المناسبة).

أمثلة:

select empSalary - empTax
select 2 * (max(empSalary) / max(empTax))

يتم تحديد عوامل التشغيل التالية:

الاسم الوصف المعلمات نوع القيمة التي يتم عرضها
+ تعرض مجموع قيمتين number. ثانيتان (number) number
- تعرض الفرق بين قيمتين من قيم number. ثانيتان (number) number
* تعرض ناتج number ثانية. ثانيتان (number) number
/ تعرض حاصل قسمة number ث. تكون نتيجة القسمة على صفر خالية. ثانيتان (number) number

العناصر اللغوية

الخطابات

المعادلات الحرفية هي قيم تستخدم للمقارنات أو المهام. ويمكن أن تكون القيم الحرفية string أو أرقامًا أو قيمًا منطقية أو أنواعًا مختلفة من التاريخ/الوقت. إليك بعض الأمثلة على القيم الحرفية المستخدمة في بنية طلب البحث:

where startDate < date "2008-03-18"  // date "2008-03-18" is a date literal
limit 30                             // 30 is a numeric literal
format salary '#,##0.00', isSenior 'not yet:of course!'  // '#,##0.00' and 'not yet:of course!' are both string literals

في ما يلي التنسيقات لكل نوع من أنواع القيم الحرفية:

string
يجب وضع القيمة الحرفية string بين علامتَي اقتباس مفردتَين أو مزدوجتَين. أمثلة: "fourteen" 'hello world' "It's raining".
number
يتم تحديد القيم الحرفية العددية في التدوين العشري. أمثلة: 3  3.0  3.14  -71  -7.2  .6
boolean
تكون القيم الحرفية المنطقية إما true أو false.
date
استخدِم الكلمة الرئيسية date متبوعة بحرفية string بالتنسيق yyyy-MM-dd. مثال: date "2008-03-18".
timeofday
استخدِم الكلمة الرئيسية timeofday متبوعة بحرفية string بالتنسيق HH:mm:ss[.SSS] مثال: timeofday "12:30:45".
datetime
التاريخ والوقت، باستخدام الكلمة الرئيسية datetime أو الكلمة الرئيسية timestamp متبوعة بحرفية string بالتنسيق yyyy-MM-dd HH:mm:ss[.sss]. مثال: datetime '2008-03-18 12:30:34.123'

المعرّفات

المعرّفات (أو المعرّفات) هي string نصية تحدِّد الأعمدة.

ملاحظة مهمة: إذا كان المعرّف الخاص بك

  • تتضمّن مسافات
  • هي كلمة محجوزة،
  • يحتوي على أي نص ما عدا الأحرف الأبجدية الرقمية أو الشرطات السفلية ([a-zA-Z0-9_])، أو
  • يبدأ برقم

يجب أن تكون محاطة بعلامتَي اقتباس للخلف (وليست علامات اقتباس مفردة).

بخلاف ذلك، لا يُشترَط اقتباس المعرّف الخاص بك. (يُرجى العلم أنّه ليست كل الكلمات الرئيسية التي يتم تحديدها من خلال البنية عبارة عن كلمات محجوزة)، لذلك يمكنك على سبيل المثال استخدام "max" كمعرّف، بدون الحاجة إلى وضع علامة اقتباس لها.

أمثلة: col1   employee_table   `start date`   `7 days traffic`   `select`

وننصحك بعدم اختيار معرّف يتطلب علامتَي اقتباس للخلف، لأنّه قد يكون من السهل نسيان استخدام علامتَي الاقتباس، أو استخدام "علامتَي اقتباس فرديتَين" عن طريق الخطأ بدلاً من علامتَي اقتباس مع علامتَي اقتباس عن غير قصد. وهذه أخطاء شائعة ويصعب تصحيحها.

الحساسية لحالة الأحرف

المعرّفات والقيم الحرفية للسلسلة حساسة لحالة الأحرف. وجميع عناصر اللغة الأخرى غير حساسة لحالة الأحرف.

الكلمات المحجوزة

يجب إضافة علامتَي اقتباس إلى الكلمات المحجوزة التالية في حال استخدامها كمعرّف:

and
asc
by
date
datetime
desc
false
format
group
label
limit
not
offset
options
or
order
pivot
select
timeofday
timestamp
true
where