تتيح لك لغة استعلام واجهة برمجة تطبيقات 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 |
lunchTimetimeofday |
الراتب number |
hireDatedate |
العمرnumber |
isSeniorboolean |
seniorityStartTimedatetime |
---|---|---|---|---|---|---|---|
John | رمز الحرف Eng | 12:00:00 | 1,000 | 2005-03-19 | 35 | صحيح | 2007-12-02 15:56:00 |
ديف | رمز الحرف Eng | 12:00:00 | 500 | 2006-04-19 | 27 | false | null |
سالي | رمز الحرف Eng | 13:00:00 | 600 | 2005-10-10 | 30 | false | null |
بن | المبيعات | 12:00:00 | 400 | 2002-10-10 | 32 | صحيح | 2005-03-09 12:30:00 |
دانا | المبيعات | 12:00:00 | 350 | 2004-09-08 | 25 | false | null |
مايك | Marketing | 13:00:00 | 800 | 2005-01-10 | 24 | صحيح | 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:00 | John |
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) . haystackmatches
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 (للعثور على أكبر قيمة في العمود) و+ (لإضافة قيم عمودَين معًا في الصف نفسه).
يمكن أن تظهر بعض الدوال في أي عبارة، وقد يظهر بعضها في مجموعة فرعية من العبارات. تم توثيق ذلك أدناه.
مثال:
بالنظر إلى هذا الجدول... | إذا طبقنا طلب البحث هذا... | نحصل على هذه النتيجة. | ||||||||||||||||||||||||
|
select upper(name), year(startDate) |
|
يتم تحديد دوال معالجة البيانات التالية من خلال لغة طلب بحث 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() |
لعرض قيمة السنة من قيمة تاريخ أو قيمة تاريخ. على سبيل المثال: تعرض الدالة المَعلمات: مَعلمة واحدة من النوع
date أو datetime نوع الإرجاع:
number |
month() |
لعرض قيمة الشهر المستندة إلى صفر من قيمة تاريخ أو تاريخ ووقت. على سبيل المثال: تعرض الدالة المَعلمات: مَعلمة واحدة من النوع
date أو datetime نوع الإرجاع:
number |
day() |
لعرض اليوم من الشهر من المَعلمات: مَعلمة واحدة من النوع
date أو datetime نوع الإرجاع:
number |
hour() |
لعرض قيمة الساعة من تاريخ ووقت أو قيمة المَعلمات: مَعلمة واحدة من النوع
datetime أو timeofday نوع الإرجاع:
number |
minute() |
تعرض قيمة الدقيقة من قيمة المَعلمات: مَعلمة واحدة من النوع
datetime أو timeofday نوع الإرجاع:
number |
second() |
تعرض القيمة الثانية من قيمة المَعلمات: مَعلمة واحدة من النوع
datetime أو timeofday نوع الإرجاع:
number |
millisecond() |
تعرض الجزء الملي ثانية من قيمة المَعلمات: مَعلمة واحدة من النوع
datetime أو timeofday نوع الإرجاع:
number |
quarter() |
عرض الربع من قيمة المَعلمات: مَعلمة واحدة من النوع
date أو datetime نوع الإرجاع:
number |
dayOfWeek() |
عرض يوم الأسبوع من قيمة المَعلمات: مَعلمة واحدة من النوع
date أو datetime نوع الإرجاع:
number |
now() |
تعرض قيمة تاريخ ووقت تمثل المَعلمات: ما مِن مَعلمات
نوع الإرجاع:
datetime |
dateDiff() |
تعرض الفرق في الأيام بين قيمتين المَعلمات: مَعلمتان من النوع
date أو datetime (يمكن أن تكون كلّ منهما واحدة)نوع الإرجاع:
number |
toDate() |
تحوِّل القيمة المقدَّمة إلى قيمة
المَعلمات: مَعلمة واحدة من النوع
date أو datetime أو number نوع الإرجاع:
date |
upper() |
عرض المَعلمات: مَعلمة واحدة من النوع
string نوع الإرجاع:
string |
lower() |
عرض المَعلمات: مَعلمة واحدة من النوع
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