1. Avant de commencer
Cet atelier de programmation vous guidera dans l'intégration d'un tableau de bord Looker intégré avec le chat Conversational Analytics pour créer une expérience de données unifiée basée sur le langage naturel. Pour en tirer le meilleur parti, vous devez maîtriser l'intégration Looker, l'analyse conversationnelle, JavaScript et React.
Points abordés
Après avoir suivi cet atelier de programmation, vous aurez appris les points suivants :
- Configurer l'application Looker Embed Reference en local
- Créer un composant React de chat avec la bibliothèque Looker Components
- Envoyer le filtre du tableau de bord intégré en tant que contexte à Conversational Analytics
- Activer le chat optimisé par l'analyse conversationnelle pour contrôler les filtres de votre tableau de bord intégré
Prérequis
Voici les conditions à réunir pour effectuer cet atelier de programmation :
- Une instance Looker avec le bloc Looker ASC Demographic Data installé et l'intégration SSO activée
- Accès aux API et aux développeurs à votre instance Looker
- Un environnement local avec Node v18, yarn, Git et gcloud installés
- Un projet cloud avec les rôles IAM suivants configurés pour votre compte utilisateur :
roles/bigquery.dataViewerLecteur de données BigQueryroles/bigquery.userUtilisateur BigQueryroles/looker.instanceUserUtilisateur d'instance Looker
2. Configurer Conversational Analytics
Configurons l'agent de données Conversational Analytics que le chat de votre tableau de bord intégré utilisera pour répondre aux questions en langage naturel.
S'authentifier avec gcloud
- Authentifiez-vous avec votre compte utilisateur dans votre environnement local :
gcloud auth login
- Définissez les identifiants par défaut de l'application (ADC) et le projet de facturation sur votre gcloud :
gcloud auth application-default login
gcloud auth application-default set-quota-project YOUR_PROJECT_ID
Activer les API Conversational Analytics
- Activez les API du projet Cloud. Veuillez remplacer
YOUR_PROJECT_IDpar l'ID de votre projet Google Cloud :
gcloud services enable geminidataanalytics.googleapis.com bigquery.googleapis.com cloudaicompanion.googleapis.com --project=YOUR_PROJECT_ID
Créer l'agent de données
- Ouvrez Google Colab.
- Dans Google Colab, chargez ce notebook à partir du dépôt de référence Looker Embed.
- Exécutez toutes les étapes du notebook. Vous aurez besoin de l'ID de votre projet Cloud et de l'URI de votre instance Looker avec une barre oblique à la fin, comme
"https://my.looker.app/". Vous devriez obtenir un résultat positif à la fin du notebook.
Vous disposez désormais d'un agent de données Conversational Analytics qui est prêt à accepter les messages de chat, à interroger les explorations Looker dans votre tableau de bord Looker intégré et à renvoyer des résultats et des visualisations.
3. Configurer la référence d'intégration Looker
Configurons l'application Looker Embed Reference dans votre environnement local afin que vous puissiez essayer l'exemple d'intégration du chat Conversational Analytics à un tableau de bord Looker intégré.
Cloner le dépôt
- Clonez le dépôt GitHub dans votre environnement local. Consultez l'exemple de commande ci-dessous :
git clone "https://github.com/looker-open-source/LookerEmbedReference.git"
- Accédez au répertoire
LookerEmbedReferenceque vous avez cloné :
cd LookerEmbedReference
Configurer et exécuter le serveur frontend local
- Installez les dépendances dans le répertoire
Frontend.
cd Frontend
yarn install
- Configurez un fichier
.envdans la racine du répertoireFrontendavec les identifiants.YOUR_LOOKER_INSTANCE_URIdoit correspondre à l'URI de votre instance Looker, sans barre oblique à la fin. Le contenu du fichier doit être le suivant :
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
Vous pouvez utiliser l'exemple de commande suivant pour créer le fichier :
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
- Exécutez le serveur de développement frontend :
yarn run dev
Configurer et exécuter le serveur de backend localement
- Ouvrez un nouvel shell, terminal, console ou onglet. Accédez au répertoire
Backend-Nodeet installez les dépendances. Assurez-vous de laisser l'ancien shell/terminal avec le serveur frontend en cours d'exécution.
cd ../Backend-Node
yarn install
- Configurez un fichier
.envdans la racine du répertoireBackend-Nodeavec des identifiants :
YOUR_LOOKER_CLIENT_IDest votre ID client Looker.YOUR_LOOKER_CLIENT_SECRETest votre code secret du client Looker.YOUR_LOOKER_EMBED_SECRETest votre code secret d'intégration.YOUR_PROJECT_IDest votre ID de projet cloud.YOUR_LOOKER_INSTANCE_URI_WITH_TRAILING_SLASHest l'URI de votre instance Looker avec une barre oblique à la fin.YOUR_LOOKER_INSTANCE_URIest l'URI de votre instance Looker sans barre oblique à la fin.
Le contenu du fichier doit être le suivant :
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
Vous pouvez utiliser l'exemple de commande suivant pour créer le fichier. Remplacez tous les identifiants en conséquence :
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
- Exécutez le serveur de développement backend :
yarn run dev
Le serveur de développement frontal est maintenant en cours d'exécution et fournit le code JavaScript pour l'application Web. Le serveur de développement de backend est également en cours d'exécution pour gérer les requêtes d'URL d'intégration de l'authentification unique et les requêtes de proxy vers les points de terminaison Conversational Analytics.
4. Essayer l'exemple
Essayons votre application Web qui s'exécute désormais localement dans votre environnement.
Démarrer une conversation
- Ouvrez l'adresse https://localhost:3001 dans le navigateur de votre choix.
- Accédez à la page Tableau de bord intégré avec chat dans le menu de navigation principal de gauche.
- Une fois le composant de chat chargé sur la droite, saisissez "Bonjour, qui êtes-vous ?".
- Notez la réponse.
L'application a automatiquement créé un objet conversation Conversational Analytics pour suivre l'historique du chat et a chargé l'interface de chat. Lorsque vous avez posé une question à l'interface de chat, le frontend a envoyé un message utilisateur à votre serveur backend Node local. Il a ensuite transféré la requête et la réponse au point de terminaison chat de Conversational Analytics.
Filtrer le tableau de bord intégré
Familiarisez-vous maintenant avec le tableau de bord intégré et interagissez avec lui.
- Faites défiler le tableau de bord intégré. Notez qu'il couvre les données de recensement pour plusieurs dimensions et métriques.
- Vous pouvez filtrer le tableau de bord par État et Comté en haut à gauche. Définissez le filtre du tableau de bord sur Texas. Sélectionnez ensuite le bouton en forme de flèche circulaire en surbrillance bleue pour exécuter à nouveau le tableau de bord.
- Notez que toutes les données de visualisation sont filtrées sur l'état du Texas.
Poser une question avec le contexte du tableau de bord
Maintenant que nous avons filtré le tableau de bord, continuons à examiner les données qu'il contient.
- Saisissez "Dis-moi les cinq comtés où les loyers sont les moins chers" dans le chat.
- Notez que votre requête à Conversational Analytics contient désormais les mots supplémentaires "Filtrer sur la dimension 'state.state_name' étant Texas".
- Notez que la requête et les données de la réponse sont filtrées sur l'état Texas.
- De plus, une fois les résultats des données renvoyés, votre tableau de bord intégré a été réexécuté avec son filtre Comté défini sur les cinq comtés définis dans les données du résultat.
Vous pouvez maintenant continuer à examiner les données du recensement, les cinq comtés étant filtrés pour vous.
Félicitations ! Vous avez configuré et testé un exemple simple de tableau de bord intégré à un chat Conversational Analytics.
5. Créer un composant de chat
Pour comprendre ce qui se passe en arrière-plan, commençons par explorer le composant Chat. Nous partons du principe que vous savez comment intégrer un tableau de bord Looker avec le SDK d'intégration Looker.
Utiliser la bibliothèque de composants Looker
- Ouvrez le fichier du composant
Chatà l'adresseFrontend/src/components/EmbedChat/components/chat.jsdans votre IDE ou votre terminal préféré. - Le composant
Chatest conçu avec des composants React de l'UI Looker standards du package Bibliothèque de composants Looker.
Envoyer un message à un utilisateur
L'interface de chat doit envoyer la requête d'un utilisateur à Conversational Analytics.
- Près du bas du fichier de composant
Chat, le composantChatcontient le sous-composantChatInput, qui fournit le champ de saisie pour la requête d'un utilisateur. - Lors de l'envoi, la méthode
showAndSendUserPromptenvoie la requête de l'utilisateur à Conversational Analytics (par proxy via votre backend Node).
Diffuser et afficher les messages système
Une fois que l'utilisateur a envoyé un message à Conversational Analytics, nous devons afficher sa réponse.
- Près du bas du fichier de composant
Chat, le composantChatcontient le sous-composantMessageList, qui contient la logique permettant d'afficher les messages de Conversational Analytics en fonction de leur type. - La méthode
streamAndParseResponsegère la réponse en essayant constamment d'analyser les messages système valides à partir de la réponse JSON en streaming. Chaque fois qu'un message système valide est analysé avec succès, il s'affiche dansMessageList.
Vous avez maintenant découvert comment le composant Chat, créé avec la bibliothèque Looker Components, envoie un message utilisateur et renvoie la réponse en streaming.
6. Envoyer des filtres de tableau de bord à Conversational Analytics
Voyons maintenant comment inclure les filtres de tableau de bord dans la requête d'un utilisateur afin que l'analyse conversationnelle puisse filtrer sa requête avec le contexte du tableau de bord (ses filtres).
Écouter l'événement de modification du filtre du tableau de bord
- Ouvrez le fichier du composant
EmbedChatà l'adresseFrontend/src/components/EmbedChat/EmbedChat.js,, qui représente la page de l'application contenant le tableau de bord intégré au composantChatexploré précédemment. - Le composant
EmbedChatécoute l'événement"dashboard:filters:changed"du tableau de bord intégré avec la méthode.on(...)du SDK d'intégration. Le composant stocke ensuite les filtres actuels dans son état de filtre.
Envoyer l'état du filtre à Conversational Analytics
- Le composant
EmbedChattransmet les filtres au composantChat, qui convertit chaque filtre en chaîne de type"Filter on dimension '...' being ..."dans la méthodeshowAndSendUserPromptà ajouter à la fin de la requête de l'utilisateur.
7. Contrôler les filtres du tableau de bord depuis le chat
Enfin, voyons comment activer le composant Chat pour contrôler les filtres du tableau de bord intégré.
Déterminer les filtres à définir
- La méthode
streamAndParseResponsedu composantChatrecherche toujours un message système contenant les résultats des données de l'analyse conversationnelle. - Chaque fois que la méthode
streamAndParseResponseanalyse un message système avec des résultats de données, elle vérifie si des dimensions dans les données correspondent aux dimensions dans les filtres. - Si c'est le cas, la méthode
streamAndParseResponseconvertit les colonnes de données en filtres de tableau de bord. Cette fois, la méthode utilise à nouveauFIELD_FILTER_MAP, mais en sens inverse, en convertissant le nom de la dimension en clé du filtre. Les valeurs du filtre sont celles de la colonne de données.
Envoyer un événement de modification de filtre au tableau de bord intégré
- Avec les filtres de tableau de bord souhaités, la méthode
streamAndParseResponseappelle la méthodesetFiltersdu composantChatavec les filtres souhaités. - Cela appelle la méthode
setDashboardFiltersdu composantEmbedChat, qui envoie deux événements,"dashboard:filters:update"avec les filtres et"dashboard:run"au tableau de bord intégré en succession immédiate à l'aide de la méthodesenddu SDK Embed. - L'événement
"dashboard:filters:update"modifie les filtres du tableau de bord intégré, tandis que l'événement"dashboard:run"réexécute les requêtes du tableau de bord avec les nouveaux filtres.
8. Conclusion et points à retenir
Vous avez configuré votre propre exemple de tableau de bord Looker intégré à la fonctionnalité de chat Conversational Analytics. Vous avez appris à activer l'exploration des données basée sur le langage naturel avec votre tableau de bord Looker intégré et Conversational Analytics.
- Vous avez créé un composant de chat avec la bibliothèque de composants Looker.
- Vous avez transmis le contexte de votre tableau de bord Looker intégré à Conversational Analytics pour faciliter l'exploration des données.
- Vous avez activé Conversational Analytics pour contrôler les filtres de votre tableau de bord intégré et ainsi obtenir plus de contexte lorsque vous explorez les données.
Étape suivante
- En savoir plus sur les fonctionnalités de Conversational Analytics
- Mettez à jour l'exemple d'application Looker Embed Reference pour qu'il fonctionne avec vos propres tableaux de bord Looker intégrés.
- Essayez les autres cas d'utilisation d'intégration disponibles dans l'exemple d'application Looker Embed Reference que vous exécutez en local.