dimanche, 14 août 2022

Vous en avez assez de rechercher Slack, GitHub et Drive séparément ? Faites tout en même temps en SQL

Vous comprenez l’exercice : les mots que vous recherchez peuvent se trouver dans Slack, ou GitHub, ou Drive, ou Google Sheets, ou Zendesk, ou… la liste est longue. La recherche à travers ces silos est une déception courante. Il doit être fluide, et ce tableau de bord Steampipe le fait.

Ce n’était pas mon premier rodéo. J’ai commencé ce voyage en 1996 et j’ai revisité l’idée de temps en temps. En 2018, j’ai écrit sur une variante qui était l’exemple intemporel de The Most basic Thing That Could Possiblement Work : un site Web qui limite les URL de recherche pour divers services et va à chacun dans son propre onglet. Aussi ridicule que cela puisse paraître, c’était assez pratique pour s’habituer un peu, et pas seulement par moi.

Évidemment, je souhaitais utiliser les API sous-jacentes, stabiliser les résultats et les combiner dans une vue typique. L’effort requis pour embrouiller toutes les API a rendu cette tâche plus difficile qu’elle n’en valait la peine. Si vous avez déjà fait ce genre de choses auparavant, sachez que la majorité des services fournissent des API de recherche ainsi que des adaptateurs pour votre langage de programme préféré. Mais chaque service aura sa propre méthode pour appeler l’API, paginer les résultats et les formater. Ces différences produisent des frictions dont vous devez vous débarrasser afin de traiter les résultats de manière cohérente.

Lorsque les conflits d’API finissent par être sans friction, cependant, de nombreuses choses finissent par être possibles. Une métarecherche efficace en fait partie. Steampipe vous évite d’avoir à appeler des API, à paginer des résultats et à déballer des objets JSON. Il appelle les API pour vous et diffuse les résultats dans des tables de base de données afin que vous puissiez vous concentrer entièrement sur l’utilisation des informations. Cela résout le problème le plus important auquel vous êtes confronté lors du développement d’un tableau de bord de métarecherche.

Assemblage sur un schéma

Le prochain obstacle est de lier les résultats de recherche à un schéma commun. SQL est un excellent environnement pour le faire. La question qui anime le tableau de bord affiché dans le screencast comprend trois versets que vous n’avez pas besoin d’être un assistant SQL pour composer. Ils suivent tous exactement le même modèle que celui-ci pour rechercher des problèmes GitHub.

choisissez ‘github_issue’ comme type, repository_full_name|| »|| titre comme source, to_char(created_at, ‘YYYY-MM-DD’) comme date, html_url comme lien, substring(body from 1 for 200)|| ‘…’ comme contenu de github_search_issue où $1 ~ ‘github_issue’ et query=’in: body in: remarques org: github’|| $2 limit $3

Les éléments en bleu sont les noms des colonnes d’une table de base de données — dans ce cas github_search_issue, parmi les tables créées par le plugin GitHub de Steampipe. Le hub Steampipe simplifie l’examen des noms et des descriptions des colonnes du tableau et vous montre des exemples d’utilisation des informations du tableau.

En raison du fait que les données n’apportent Pour ne pas nécessiter l’appel d’API et la décompression de JSON, vous pouvez vous concentrer sur la syntaxe de recherche d’ordre supérieur, à laquelle il faut beaucoup réfléchir, ainsi que sur la difficulté intrigante (et agréable !) de mapper les colonnes source sur un schéma commun.

Les produits en rouge sont les noms des colonnes qui apparaissent dans le tableau de bord. Pour ce tableau de bord, nous avons en fait décidé que chaque résultat de moteur de recherche correspondra à ces 5 colonnes : type, source, date, lien et matériel. La disposition AS de SQL permet à chaque strophe de renommer facilement ses colonnes pour correspondre au schéma.

La requête complète

Voici la question complète qui pilote le panneau de configuration. Il y a 3 versets comme celui ci-dessus, chacun écrit sous la forme d’un CTE (expression de table commune) avec des spécifications représentant des variables d’entrée. Et il n’y a presque rien d’autre ! Chaque strophe interroge une table basée sur l’API (slack_search, github_search_issue, googleworkspace_drive_my_file), choisit (et peut-être modifie) des colonnes, puis aliase les résultats pour qu’ils correspondent au schéma. Il ne reste plus qu’à UNION les trois CTE, qui agissent comme des tables éphémères, et à acheter les résultats.

avec slack as (choose ‘slack’ as type, user_name||’ in #’|| (channel ->> ‘nom’): : texte comme source, to_char(timestamp, ‘YYYY-MM-DD’) comme date, lien permanent comme lien, sous-chaîne (texte de 1 pour 200) comme matériel de slack_search où $1 ~ ‘slack’ et query=’in: #steampipe after:$ ‘|| $2 limitation $3 ), github_issue as (choose ‘github_issue’ as type, repository_full_name|| »|| title as source, to_char(created_at, ‘YYYY-MM-DD’ ) comme date, html_url comme lien, substring(body from 1 for 200)|| ‘…’ comme matériel de github_search_issue où $1 ~ ‘github_issue’ et question =’ in: body in: comments org:$ local.config. github _ org’|| $2 limitation $3 ), gdrive as (sélectionnez ‘gdrive’ comme type, change(mime_type,’application/vnd. -apps.’, » ») comme source, to_char(created_time, ‘YYYY-MM-DD’) comme date, ‘https://docs..com/document/d/’|| id comme lien, nom comme contenu de googleworkspace_drive_my_file où $1 ~ ‘gdrive’ and question=’fullText includes’|| «  »||$2|| «  »limitation $3) select * from slack union select * from github_issue union choose * from gdrive trier par date desc

Tableaux de bord en tant que code

De nombreux systèmes de tableaux de bord peuvent traiter cette requête. Vous pouvez, par exemple, connecter Metabase, ou Tableau, ou un autre client Postgres à Steampipe et construire exactement le même type de tableau de bord interactif que celui révélé ici. Vous feriez cela dans un environnement low-code où les widgets et les paramètres sont gérés dans une interface. Le sous-système de tableau de bord de Steampipe adopte une approche différente informée par ses racines d’infrastructure en tant que code (IaC). Les questions contre les API doivent être révélé dans le code SQL qui est géré, comme tout autre code, dans des dépôts sous contrôle de version. Les widgets du panneau de contrôle qui affichent le résultat s de ces requêtes doivent également être exprimées en code, et dans ce cas, le langage est le HCL de Terraform.

Voici la signification HCL du tableau de bord de métarecherche. Il indique trois types de bloc input : sources (sélection multiple), search_term (texte) et max_per_source (sélection unique, qui est la valeur par défaut). Vous pouvez faire beaucoup plus avec le bloc input – de manière significative, vous pouvez le remplir avec une requête SQL, comme indiqué dans les documents. Ce n’est pas nécessaire ici, cependant.

Le bloc table utilise la requête spécifiée ci-dessus et spécifie les critères qui lui sont transmis. L’argument wrap garantit que les colonnes contenant beaucoup de texte seront compréhensibles.

dashboard « metasearch  » input « sources  » input « search_term  » input « max_per_source  » title = « max per source  » width = 2 alternative « 2 » option « 5 » option « 10 » choix « 20 » table

Encore une fois, il n’y a pas grand-chose d’autre à voir ici, et il n’est pas nécessaire qu’il y en ait. Structurer les tableaux de bord sous forme de code ne devrait pas nécessiter beaucoup de code complexe, et ce n’est pas le cas.

Aucun assistant n’est nécessaire

Tout comme vous n’avez pas besoin d’être un assistant SQL pour créer de nouveaux sous-requêtes, vous n’avez pas non plus besoin d’être un assistant HCL pour les ajouter au panneau de configuration. Souhaitez-vous ajouter des sources ? Il existe de nombreux autres plugins parmi lesquels choisir, avec plus inclus mensuellement. Ils ne traitent pas tous de la recherche, mais beaucoup le font, et il est facile de les découvrir avec (bien sûr !) une requête Steampipe.

sélectionnez le nom html_url de github_search_code où query=’search org : turbot org : francois2metz org : ellisvalentiner org: theapsgroup’ et name ~ ‘table’ and call ~ ‘search’ trier par nom nous nous sommes débarrassés de l’expiration de notre compte d’essai. Amusez-vous à étendre ce tableau de bord ! Si une API de recherche dont vous avez besoin n’est pas déjà disponible, arrêtez-vous dans notre quartier Slack et laissez-nous comprendre. Quelqu’un est peut-être en train d’écrire le plugin dont vous avez besoin – ou peut-être souhaitez-vous vous en occuper vous-même. Chaque nouveau plug-in permet à quiconque peut gérer les fondamentaux HCL plus SQL d’utiliser les API comme un professionnel et de résoudre les problèmes réels.

.

Toute l’actualité en temps réel, est sur L’Entrepreneur

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici