1. قبل البدء
سيرشدك هذا الدرس التطبيقي حول الترميز إلى كيفية دمج لوحة بيانات Looker مضمّنة مع محادثة تستند إلى "التحليلات الحوارية" لإنشاء تجربة موحّدة للبيانات تستند إلى اللغة الطبيعية. لتحقيق أقصى استفادة، يجب أن تكون على دراية بتضمين Looker و"الإحصاءات الحوارية" وJavaScript وReact.
ما ستتعلمه
بعد اتّباع هذا الدرس التطبيقي، ستتعرّف على ما يلي:
- كيفية إعداد تطبيق Looker Embed Reference محليًا
- كيفية إنشاء مكوّن محادثة React باستخدام مكتبة Looker Components
- كيفية إرسال فلتر لوحة البيانات المضمّنة كمرجع إلى "التحليلات الحوارية"
- كيفية تفعيل الدردشة المستندة إلى "التحليلات الحوارية" للتحكّم في فلاتر لوحة البيانات المضمّنة
المتطلبات
لإكمال هذا الدرس التطبيقي، ستحتاج إلى:
- مثيل Looker مثبَّت عليه وحدة Looker البرمجية لبيانات التركيبة السكانية في "متجر Play" مع تفعيل التضمين باستخدام الدخول المُوحَّد (SSO)
- إمكانية وصول واجهة برمجة التطبيقات والمطوّرين إلى نسخة Looker
- بيئة محلية مثبَّت عليها Node v18 وyarn وGit وgcloud
- مشروع على السحابة الإلكترونية تمّ إعداد أدوار إدارة الهوية وإمكانية الوصول هذه لحسابك:
roles/bigquery.dataViewerعارِض بيانات في BigQueryroles/bigquery.userمستخدم BigQueryroles/looker.instanceUserمستخدم نسخة Looker
2. إعداد Conversational Analytics
لنبدأ بإعداد وكيل بيانات "الإحصاءات الحوارية" الذي ستستخدمه محادثة لوحة البيانات المضمّنة للإجابة عن الأسئلة باللغة الطبيعية.
المصادقة باستخدام gcloud
- المصادقة باستخدام حسابك في بيئتك المحلية:
gcloud auth login
- اضبط بيانات الاعتماد التلقائية للتطبيق (ADC) ومشروع الفوترة على gcloud:
gcloud auth application-default login
gcloud auth application-default set-quota-project YOUR_PROJECT_ID
تفعيل واجهات Conversational Analytics API
- فعِّل واجهات برمجة التطبيقات لمشروع على السحابة الإلكترونية. يُرجى استبدال
YOUR_PROJECT_IDبمعرّف مشروعك على Google Cloud:
gcloud services enable geminidataanalytics.googleapis.com bigquery.googleapis.com cloudaicompanion.googleapis.com --project=YOUR_PROJECT_ID
إنشاء وكيل البيانات
- افتح Google Colab.
- في Google Colab، حمِّل ورقة الملاحظات هذه من مستودع Looker Embed Reference.
- نفِّذ جميع خطوات دفتر الملاحظات. ستحتاج إلى رقم تعريف مشروعك على السحابة الإلكترونية ومعرّف الموارد المنتظم (URI) لمثيل Looker مع شرطة مائلة في النهاية، مثل
"https://my.looker.app/". يجب أن تحصل على نتيجة ناجحة في نهاية ورقة الملاحظات.
يتوفّر لديك الآن موظّف دعم "التحليلات الحوارية" وهو جاهز لتلقّي رسائل المحادثة، والاستعلام عن استكشافات Looker في لوحة بيانات Looker المضمّنة، وعرض النتائج والعروض المرئية.
3- إعداد Looker Embed Reference
لنبدأ بإعداد تطبيق Looker Embed Reference في بيئتك المحلية حتى تتمكّن من تجربة مثال على دمج محادثة Conversational Analytics مع لوحة بيانات Looker مضمّنة.
إنشاء نسخة طبق الأصل من المستودع
- استنسِخ مستودع GitHub إلى بيئتك المحلية. اطّلِع على مثال الأمر التالي أدناه:
git clone "https://github.com/looker-open-source/LookerEmbedReference.git"
- انتقِل إلى الدليل
LookerEmbedReferenceالذي نسخته:
cd LookerEmbedReference
إعداد خادم الواجهة الأمامية المحلّي وتشغيله
- تثبيت التبعيات في الدليل
Frontend
cd Frontend
yarn install
- إعداد ملف
.envفي جذر دليلFrontendباستخدام بيانات الاعتماد يجب أن يكونYOUR_LOOKER_INSTANCE_URIهو معرّف الموارد المنتظم (URI) لنسخة Looker بدون شرطة مائلة لاحقة. يجب أن يكون محتوى الملف على النحو التالي:
PBL_CLIENT_PORT=3001
API_HOST=http://localhost:3000
LOOKER_HOST=YOUR_LOOKER_INSTANCE_URI
LOOKER_API_HOST=YOUR_LOOKER_INSTANCE_URI:19999
LOOKERSDK_EMBED_HOST=YOUR_LOOKER_INSTANCE_URI
يمكنك استخدام مثال الأمر التالي لإنشاء الملف:
cat > .env <<'EOF'
PBL_CLIENT_PORT=3001
API_HOST=http://localhost:3000
LOOKER_HOST=YOUR_LOOKER_INSTANCE_URI
LOOKER_API_HOST=YOUR_LOOKER_INSTANCE_URI:19999
LOOKERSDK_EMBED_HOST=YOUR_LOOKER_INSTANCE_URI
EOF
- شغِّل خادم تطوير الواجهة الأمامية:
yarn run dev
إعداد خادم الخلفية وتشغيله محليًا
- افتح نافذة shell أو Terminal أو وحدة تحكّم أو علامة تبويب جديدة. انتقِل إلى الدليل
Backend-Nodeوثبِّت الموارد التابعة. احرص على إبقاء نافذة الصدفة/الوحدة الطرفية السابقة مفتوحة مع تشغيل خادم الواجهة الأمامية.
cd ../Backend-Node
yarn install
- أنشئ ملف
.envفي جذر دليلBackend-Nodeيتضمّن بيانات الاعتماد:
-
YOUR_LOOKER_CLIENT_IDهو معرّف عميل Looker. -
YOUR_LOOKER_CLIENT_SECRETهو سر عميل Looker. -
YOUR_LOOKER_EMBED_SECRETهو سر التضمين. YOUR_PROJECT_IDهو رقم تعريف مشروعك على السحابة الإلكترونية.-
YOUR_LOOKER_INSTANCE_URI_WITH_TRAILING_SLASHهو معرّف الموارد المنتظم (URI) لنسخة Looker مع شرطة مائلة لاحقة. -
YOUR_LOOKER_INSTANCE_URIهو معرّف الموارد المنتظم (URI) لنسخة Looker بدون شرطة مائلة لاحقة.
يجب أن يكون محتوى الملف على النحو التالي:
PBL_BACKEND_PORT=3000
LOOKERSDK_API_VERSION=4.0
LOOKERSDK_BASE_URL=YOUR_LOOKER_INSTANCE_URI_WITH_TRAILING_SLASH
LOOKERSDK_CLIENT_ID=YOUR_LOOKER_CLIENT_ID
LOOKERSDK_CLIENT_SECRET=YOUR_LOOKER_CLIENT_SECRET
LOOKERSDK_EMBED_HOST=YOUR_LOOKER_INSTANCE_URI
LOOKERSDK_EMBED_SECRET=YOUR_LOOKER_EMBED_SECRET
CLOUD_AGENT_ID=looker_embed_reference_data_agent
CLOUD_PROJECT_ID=YOUR_PROJECT_ID
يمكنك استخدام مثال الأمر التالي لإنشاء الملف. استبدِل جميع بيانات الاعتماد على النحو التالي:
cat > .env <<'EOF'
PBL_BACKEND_PORT=3000
LOOKERSDK_API_VERSION=4.0
LOOKERSDK_BASE_URL=YOUR_LOOKER_INSTANCE_URI_WITH_TRAILING_SLASH
LOOKERSDK_CLIENT_ID=YOUR_LOOKER_CLIENT_ID
LOOKERSDK_CLIENT_SECRET=YOUR_LOOKER_CLIENT_SECRET
LOOKERSDK_EMBED_HOST=YOUR_LOOKER_INSTANCE_URI
LOOKERSDK_EMBED_SECRET=YOUR_LOOKER_EMBED_SECRET
CLOUD_AGENT_ID=looker_embed_reference_data_agent
CLOUD_PROJECT_ID=YOUR_PROJECT_ID
EOF
- شغِّل خادم تطوير الخلفية:
yarn run dev
أصبح لديك الآن خادم تطوير الواجهة الأمامية يعمل ويعرض JavaScript لتطبيق الويب. يجب أيضًا تشغيل خادم تطوير الخلفية للتعامل مع طلبات عنوان URL المضمّن للدخول المُوحَّد وطلبات الخادم الوكيل إلى نقاط نهاية "الإحصاءات الحوارية".
4. تجربة المثال
لنختبر تطبيق الويب الذي يتم تشغيله الآن على جهازك في بيئتك.
بدء محادثة
- افتح العنوان https://localhost:3001 في المتصفّح الذي تختاره.
- انتقِل إلى صفحة لوحة البيانات المضمّنة مع ميزة "المحادثة" في قائمة التنقّل الرئيسية اليمنى.
- بعد تحميل مكوّن المحادثة على يسار الصفحة، اكتب: "مرحبًا، من أنت؟"
- دوِّن الردّ.
أنشأ التطبيق تلقائيًا عنصر محادثة في Conversational Analytics لتتبُّع سجلّ المحادثات، وتم تحميل واجهة المحادثة. عندما طرحت سؤالاً على واجهة المحادثة، أرسلت الواجهة الأمامية رسالة مستخدم إلى خادم Node الخلفي المحلي. بعد ذلك، تم توجيه الطلب إلى نقطة نهاية المحادثة في "إحصاءات المحادثات" وتلقّي الردّ منها.
فلترة لوحة البيانات المضمّنة
الآن، تعرَّف على لوحة البيانات المضمّنة وتفاعَل معها.
- تصفَّح لوحة البيانات المضمّنة. يُرجى العِلم أنّه يغطّي بيانات التعداد السكاني على مستوى سمات ومقاييس متعدّدة.
- يمكنك فلترة لوحة البيانات حسب الولاية والمقاطعة في أعلى يمين لوحة البيانات. اضبط الفلتر في فلتر لوحة البيانات على تكساس. بعد ذلك، انقر على زر السهم الدائري المميّز باللون الأزرق لتشغيل لوحة البيانات مرة أخرى.
- لاحظ كيف يتم فلترة جميع بيانات التصورات حسب الولاية تكساس.
طرح سؤال مع سياق لوحة البيانات
بعد أن فلترنا لوحة البيانات، لنواصل التحقيق في البيانات الواردة فيها.
- أرسِل "أريد معرفة أهم 5 مقاطعات ذات إيجار منخفض" في المحادثة.
- يُرجى العِلم أنّ طلبك إلى "الإحصاءات الحوارية" يتضمّن الآن الكلمات الإضافية "فلترة حسب السمة state.state_name التي تساوي Texas".
- الآن، لاحظ أنّه يتم فلترة طلب البحث والبيانات الخاصة بالردّ حسب الولاية تكساس.
- بعد عرض نتائج البيانات، تمّت إعادة تشغيل لوحة البيانات المضمّنة مع ضبط فلتر المقاطعة على المقاطعات الخمس المحدّدة في بيانات النتيجة.
يمكنك الآن مواصلة التحقيق في بيانات التعداد السكاني، مع فلترة المقاطعات الخمس بسهولة.
تهانينا! لقد أعددت مثالاً بسيطًا على لوحة بيانات مضمّنة مدمَجة مع محادثة Conversational Analytics وجرّبته.
5- إنشاء مكوّن محادثة
لنتعرّف على ما يحدث في الخلفية من خلال استكشاف المكوّن Chat أولاً. نفترض أنّك تعرف كيفية تضمين لوحة بيانات Looker باستخدام Looker Embed SDK.
استخدام مكتبة Looker Component
- افتح ملف المكوّن
ChatفيFrontend/src/components/EmbedChat/components/chat.jsفي بيئة التطوير المتكاملة المفضّلة لديك أو في نافذة الأوامر. - تم إنشاء المكوّن
Chatباستخدام مكوّنات React القياسية لواجهة مستخدم Looker من حزمة مكتبة مكوّنات Looker.
إرسال رسالة إلى مستخدم
يجب أن ترسل واجهة المحادثة طلب المستخدم إلى Conversational Analytics.
- بالقرب من أسفل ملف مكوّن
Chat، يحتوي مكوّنChatعلى المكوّن الفرعيChatInputالذي يوفّر حقل الإدخال لطلب المستخدم. - عند الإرسال، ترسل الطريقة
showAndSendUserPromptطلب المستخدم إلى "الإحصاءات الحوارية" (يتمّ توجيهه من خلال الخلفية المستندة إلى Node).
عرض رسائل النظام
بعد أن يرسل المستخدم رسالة إلى "الإحصاءات الحوارية"، علينا عرض ردّها.
- بالقرب من أسفل ملف مكوّن
Chat، يحتوي مكوّنChatعلى المكوّن الفرعيMessageListالذي يتضمّن منطق عرض الرسائل من "الإحصاءات الحوارية" استنادًا إلى نوع الرسالة. - تعالج الدالة
streamAndParseResponseالاستجابة من خلال محاولة تحليل رسائل النظام الصالحة باستمرار من استجابة JSON للبث. عندما يتم تحليل رسالة نظام صالحة بنجاح، يتم عرضها فيMessageList.
لقد استكشفت الآن كيف يرسل المكوّن Chat، الذي تم إنشاؤه باستخدام مكتبة Looker Components، رسالة مستخدم ويعيد بث الرد.
6. إرسال فلاتر لوحة البيانات إلى Conversational Analytics
لنتعرّف الآن على كيفية تضمين فلاتر لوحة البيانات في طلب المستخدم حتى تتمكّن ميزة "الإحصاءات الحوارية" من فلترة طلب البحث باستخدام سياق لوحة البيانات (فلاترها).
الاستماع إلى حدث تغيير الفلتر في لوحة البيانات
- افتح ملف المكوّن
EmbedChatفيFrontend/src/components/EmbedChat/EmbedChat.js,الذي يمثّل صفحة التطبيق التي تحتوي على لوحة البيانات المضمّنة والمدمجة مع المكوّنChatالذي تم استكشافه سابقًا. - يستمع المكوّن
EmbedChatإلى الحدث"dashboard:filters:changed"من لوحة البيانات المضمّنة باستخدام طريقة.on(...)في Embed SDK. بعد ذلك، يخزّن المكوّن الفلاتر الحالية في حالة الفلتر.
إرسال حالة الفلتر إلى "إحصاءات المحادثات"
- يمرِّر المكوّن
EmbedChatالفلاتر إلى المكوّنChat، الذي يحوّل كل فلتر إلى سلسلة مثل"Filter on dimension '...' being ..."في الطريقةshowAndSendUserPromptليتم إلحاقها بطلب المستخدم.
7. التحكّم في فلاتر لوحة البيانات من المحادثة
أخيرًا، لنتعرّف على كيفية تفعيل مكوّن Chat للتحكّم في فلاتر لوحة البيانات المضمّنة.
تحديد الفلاتر التي تريد ضبطها
- تتحقّق طريقة
streamAndParseResponseفي مكوّنChatدائمًا من وجود رسالة نظام تتضمّن نتائج البيانات من "الإحصاءات الحوارية". - عندما تحلّل الطريقة
streamAndParseResponseرسالة نظام تتضمّن نتائج بيانات، فإنّها تتحقّق ممّا إذا كانت أيّ سمات في البيانات تتطابق مع السمات في الفلاتر. - في هذه الحالة، تحوّل الطريقة
streamAndParseResponseأعمدة البيانات إلى فلاتر في لوحة البيانات. في هذه المرة، تستخدم الطريقةFIELD_FILTER_MAPمرة أخرى، ولكن بشكل عكسي، أي من اسم السمة إلى مفتاح الفلتر. قيم الفلتر هي القيم في عمود البيانات.
إرسال حدث تغيير الفلتر إلى لوحة البيانات المضمّنة
- باستخدام فلاتر لوحة البيانات المطلوبة، تستدعي الطريقة
streamAndParseResponseالطريقةsetFiltersللمكوّنChatمع الفلاتر المطلوبة. - يؤدي ذلك إلى استدعاء طريقة
setDashboardFiltersفي المكوّنEmbedChat، ما يؤدي إلى إرسال حدثَين،"dashboard:filters:update"مع الفلاتر و"dashboard:run"إلى لوحة البيانات المضمّنة على الفور باستخدام طريقةsendفي Embed SDK. - يغيّر الحدث
"dashboard:filters:update"فلاتر لوحة البيانات المضمّنة، بينما يعيد الحدث"dashboard:run"تنفيذ طلبات البحث في لوحة البيانات باستخدام الفلاتر الجديدة.
8. الخاتمة والنقاط الرئيسية
لقد أعددت مثالاً عمليًا خاصًا بك على لوحة بيانات Looker مضمّنة ومدمجة مع محادثة Conversational Analytics. لقد تعلّمت كيفية تفعيل استكشاف البيانات المستند إلى اللغة الطبيعية باستخدام لوحة بيانات Looker المضمّنة و"الإحصاءات الحوارية".
- لقد أنشأت مكوّن محادثة باستخدام مكتبة Looker Component.
- لقد نقلت سياق لوحة بيانات Looker المضمّنة إلى "التحليلات الحوارية" لتسهيل استكشاف البيانات.
- لقد فعّلت "الإحصاءات الحوارية" للتحكّم في فلاتر لوحة البيانات المضمّنة من أجل الحصول على سياق محسّن أثناء استكشاف البيانات.
الخطوات التالية
- مزيد من المعلومات عن إمكانات Conversational Analytics
- عدِّل تطبيق المثال Looker Embed Reference ليعمل مع لوحات بيانات Looker المضمّنة.
- جرِّب حالات الاستخدام الأخرى المضمّنة المتوفّرة في تطبيقك النموذجي Looker Embed Reference الذي يتم تشغيله على جهازك.