
Ten skrypt jedynie dotyka powierzchni tego, co jest możliwe przy użyciu Pythona, Plotly Dash i naszych interfejsów API.
Prawie rok temu Tom Mairs, dyrektor ds. sukcesu klienta Bird, stworzył narzędzie do rozsyłania maili wykorzystujące Bird APIs. W tym poście kontynuuję tam, gdzie on skończył. Jego narzędzie umożliwia czasowe przesyłanie zadań, ale co jeśli chcemy stworzyć własne pulpity i dzienniki zdarzeń?
Może chcę stworzyć konkretny pulpit dla grupy biznesowej lub pulpit skierowany do klientów, ale nie dawać użytkownikom pełnego dostępu do interfejsu Bird. Ten skrypt dotyka jedynie powierzchni tego, co jest możliwe przy użyciu Python, Plotly Dash oraz naszych APIs. Podczas tworzenia pulpitów przetwarzających dane API o dużej objętości, należy pamiętać, że komponenty infrastruktury, takie jak DNS, mogą stać się wąskimi gardłami - doświadczyliśmy wyzwań skalowania AWS DNS, które wpłynęły na nasze możliwości przetwarzania danych. Dla entuzjastów wizualnych przepływów pracy można również rozważyć integrację Flow Builder z Google Cloud Functions i Vision API w celu dodania automatyzacji zasilanej przez AI do swoich rurociągów przetwarzania danych.
Rozpoczynając moje poszukiwania online, chciałem znaleźć ścieżkę najmniejszego oporu. Mogłem sam stworzyć wszystkie pulpity i interfejsy użytkownika w HTML i pythonie, jednak po pewnym wyszukiwaniu w Google natknąłem się na Plotly’s Dash, który łatwo integruje się z pythonem. Wybrałem Dash z dwóch powodów: 1) jest open source, i 2) po przeczytaniu dokumentacji wydawał się łatwo dostosowywalny do tego, co chciałem zrobić. Dash jest otwartoźródłową biblioteką, która jest idealna do budowania i wdrażania aplikacji danych z dostosowanymi interfejsami użytkownika. To sprawiło, że tworzenie interfejsu użytkownika było niezwykle proste. Pytanie brzmiało wtedy, jak skomplikowane chcę, aby to było? Im więcej czasu poświęcałem, tym więcej funkcji chciałem dodać.
W początkowym projekcie chciałem upewnić się, że mam pulpit z dostosowywalnymi metrykami i wybieranym czasookresem. Początkowo zacząłem od pulpitu, na którym można było wybrać tylko jedną metrykę z rozwijanej listy. Następnie, po otrzymaniu opinii od kolegów, nieco udoskonaliłem pulpit, aby dodać funkcję multi-wyboru i tytuły osi. Również zdecydowałem się dodać dodatkową kartę do dziennika zdarzeń. Doszedłem do punktu, w którym byłem zadowolony z tego, co miałem jako dobry punkt wyjścia dla każdego, kto chciałby rozbudować własne pulpity. Dla deweloperów, którzy chcą wprowadzić dane w czasie rzeczywistym z webhooków do swoich pulpitów, zapoznaj się z naszym przewodnikiem na temat budowania konsumentów webhooków z Azure Functions. Oczywiście umieściłem projekt w Github do klonowania lub rozwijania.
Pierwsze kroki
Aby uzyskać dostęp do tej app, musisz upewnić się, że używasz python 3.10 lub nowszego i zainstalować następujące biblioteki:
requests
dash
pandas
Następnie wprowadź swój klucz API do App.py i uruchom aplikację. Będzie działać na http://localhost:8050. Aby uzyskać więcej informacji na temat wdrażania na serwer publiczny (takie jak AWS), zobacz następujące zasoby:
Tworzenie strony Dashboard
Tworzenie strony Event Details
Strona szczegółów wydarzenia była nieco trudniejsza, ponieważ nie wiedziałem, jak najlepiej przedstawić wszystkie metryki wydarzeń w łatwy do odczytania sposób. Rozważałem dodanie parametrów filtrowania do tej strony, jednak zdecydowałem, że dodałoby to znaczny czas do tego projektu, ponieważ tabela musiałaby być wtedy dynamiczna (wraz z dodaniem parametrów, wywołań zwrotnych itp.). Zdecydowałem się pokazać wszystkie wydarzenia i umieścić znacznik czasu na początku (ponieważ bez umieszczenia znacznika czasu na początku, wykres nie był łatwy do odczytania). Początkowo stwierdziłem, że z samym surowym HTML, tabela była wyjątkowo niewygodna dla oczu. Nie było żadnych obramowań ani różnic kolorów między nagłówkiem a wierszami. Aby tabela była łatwiejsza do odczytania, mogłem użyć CSS w Dash.
Pomysł na szczegóły wydarzenia jest prawie taki sam jak na pulpicie, z tą różnicą, że tym razem wywołuję Events API i pobieram wszystkie wydarzenia. Zauważ, że szczegóły wydarzenia pokazują tylko 10 najnowszych wydarzeń (korzystając z parametru max_rows i filtrowania API). Można to zwiększyć, jednak zdecydowałem się pokazywać 10 najnowszych wydarzeń, ponieważ im więcej wydarzeń jest pokazywanych, tym dłużej trwa wywołanie API. Jednym ze znaczących ulepszeń, które można wprowadzić, byłaby możliwość paginacji i włączenia opcji Następna strona / Poprzednia strona w interfejsie użytkownika.
Aby zbudować zakładkę (stronę) wydarzeń, najpierw wywołuję Events API i analizuję odpowiedź JSON na ramkę danych. Następnie sortuję i porządkuję ramkę danych, aby umieścić znacznik czasu jako pierwszą kolumnę. Na koniec tworzę tabelę HTML, iterując przez ramkę danych.
Która wygląda tak w interfejsie użytkownika.

Następne Kroki
Dla kogoś, kto chce stworzyć własny pulpit nawigacyjny lub dziennik wydarzeń, jest to dobry początek. Dzięki możliwości dostosowywania, jedynym ograniczeniem jest wyobraźnia.
Jak omówiono powyżej, niektóre przyszłe ulepszenia, które można wprowadzić, to:
Dodanie analizy dostarczalności do pulpitu nawigacyjnego
Dodanie większej liczby filtrów do pulpitu nawigacyjnego
Możliwe opcje buforowania, aby API nie było wywoływane za każdym razem w celu wyświetlenia stron
Ulepszenia UI
Dodanie filtrowania i stronicowania do strony szczegółów wydarzenia
Byłbym zainteresowany usłyszeniem jakichkolwiek uwag lub sugestii dotyczących rozszerzenia tego projektu.
~ Zach Samuels, Bird Senior Solutions Engineer