Połączenie PowerApps z Azure Databricks

Dowiedz się, jak skutecznie połączyć PowerApps z Azure Databricks – od konfiguracji, przez API, po bezpieczeństwo i przykłady zastosowań.
01 stycznia 2025
blog
Poziom: Zaawansowany

Artykuł przeznaczony dla developerów i architektów rozwiązań Power Platform oraz Azure, którzy chcą zintegrować PowerApps z Azure Databricks z uwzględnieniem API, bezpieczeństwa i diagnostyki.

Z tego artykułu dowiesz się

  • Jakie wymagania wstępne i elementy środowiska są potrzebne do integracji PowerApps z Azure Databricks?
  • Jakie są sposoby wystawienia API w Azure Databricks i kiedy wybrać notebook jako endpoint, REST API lub własne API we Flasku?
  • Jak bezpiecznie połączyć PowerApps z Databricks (konektory/API), jaką autoryzację zastosować i jak rozwiązywać typowe problemy integracyjne?

Wymagania wstępne i przygotowanie środowiska

Przed rozpoczęciem integracji PowerApps z Azure Databricks, należy upewnić się, że posiadamy odpowiednio przygotowane środowisko oraz niezbędne uprawnienia. PowerApps to platforma typu low-code umożliwiająca szybkie tworzenie aplikacji biznesowych, podczas gdy Azure Databricks to skalowalna platforma do analizy danych i uczenia maszynowego oparta na Apache Spark. Połączenie tych dwóch narzędzi pozwala na tworzenie aplikacji, które w czasie rzeczywistym wykorzystują przetwarzanie danych do wspierania decyzji biznesowych.

Aby rozpocząć pracę, potrzebne będą następujące elementy:

  • Subskrypcja Microsoft Azure – umożliwia utworzenie usługi Azure Databricks i zarządzanie zasobami w chmurze.
  • Konto Power Platform – dostęp do PowerApps w ramach organizacji umożliwi tworzenie i publikację aplikacji.
  • Uprawnienia administracyjne w Azure – wymagane do utworzenia instancji Databricks, konfiguracji Identity oraz integracji z PowerApps.
  • Dostęp do Azure Active Directory (Azure AD) – konieczny do zarządzania tożsamością użytkowników i konfiguracji mechanizmów autoryzacji.

Aby przygotować środowisko:

  • Utwórz obszar roboczy Azure Databricks w wybranym regionie, dostosowanym do potrzeb aplikacji.
  • Skonfiguruj odpowiednie zasady sieciowe, takie jak dostęp przez Private Endpoint, jeśli wymagany jest wyższy poziom bezpieczeństwa.
  • W ramach Power Platform przygotuj środowisko Dataverse lub inne źródło danych, które będzie wykorzystywane w aplikacji.
  • Zainstaluj niezbędne biblioteki PySpark w środowisku Databricks, jeśli planujesz analizować dane lub korzystać z uczenia maszynowego.

Warto również przygotować przykładowy zbiór danych (np. plik CSV na Azure Data Lake lub kontenerze Blob Storage), który będzie wykorzystany do demonstracji działania aplikacji. Na potrzeby testów można także utworzyć prosty notebook w Databricks, który np. przekształci dane wejściowe lub zwróci prognozę na podstawie modelu ML.

Konfiguracja PowerApps i Azure Databricks

Integracja PowerApps z Azure Databricks wymaga odpowiedniego przygotowania obu środowisk tak, aby mogły ze sobą skutecznie współpracować. Choć każda z tych platform pełni inne funkcje, ich połączenie umożliwia tworzenie nowoczesnych aplikacji wspieranych zaawansowaną analizą danych.

PowerApps to usługa umożliwiająca szybkie budowanie aplikacji biznesowych bez konieczności pisania dużej ilości kodu. Użytkownicy mogą tworzyć interfejsy użytkownika i łączyć je z różnymi źródłami danych w sposób wizualny. PowerApps najlepiej sprawdza się jako warstwa prezentacyjna (frontend) w rozwiązaniach, które integrują wiele źródeł danych i wymagają prostego dostępu dla użytkowników biznesowych.

Azure Databricks to zaawansowana platforma analityczna oparta na Apache Spark, oferująca możliwości przetwarzania dużych zbiorów danych, uczenia maszynowego i integracji z usługami chmurowymi. Databricks pełni rolę zaplecza obliczeniowego (backendu), które umożliwia wykonywanie analizy danych w czasie rzeczywistym i udostępnianie wyników w sposób zautomatyzowany.

Aby rozpocząć konfigurację, należy:

  • Zalogować się do Power Platform Admin Center i upewnić się, że mamy odpowiednie uprawnienia do tworzenia aplikacji oraz dostęp do środowiska, w którym będą one rozwijane.
  • Skonfigurować środowisko Azure Databricks – utworzyć workspace, przypisać zasoby oraz przygotować dostęp użytkowników, którzy będą odpowiadać za przygotowanie notebooków i endpointów API.
  • Upewnić się, że dostępne są mechanizmy uwierzytelniania, takie jak tokeny dostępu w Databricks oraz odpowiednie konektory lub bramki (gateway) w PowerApps, które umożliwią komunikację między tymi usługami.

W dalszej części konfiguracji istotne będzie określenie sposobu, w jaki PowerApps będzie wysyłać zapytania do Databricks (np. poprzez REST API) oraz jak Databricks będzie przygotowywać odpowiedzi dostępne dla aplikacji frontendowej.

Choć PowerApps i Azure Databricks różnią się sposobem działania i przeznaczeniem, ich połączenie pozwala na budowanie aplikacji, które nie tylko prezentują dane użytkownikom, ale również korzystają z mocy przetwarzania dużych zbiorów danych i modeli analitycznych działających w tle.

Tworzenie interfejsu API w Azure Databricks

Integracja PowerApps z Azure Databricks opiera się na możliwości komunikacji między tymi dwoma środowiskami. Kluczowym elementem tej komunikacji jest interfejs API (Application Programming Interface), który umożliwia PowerApps wysyłanie zapytań i odbieranie danych z Databricks. W tej sekcji przedstawiamy ogólne podejście do przygotowania takich interfejsów w środowisku Databricks oraz omówimy ich podstawowe typy. Jeśli chcesz dowiedzieć się więcej o budowaniu aplikacji w PowerApps, sprawdź nasz Kurs Microsoft PowerApps podstawowy - tworzenie aplikacji, projektowanie i automatyzowanie procesów biznesowych.

1. Podejścia do tworzenia API w Azure Databricks

Azure Databricks pozwala na tworzenie interfejsów API na kilka sposobów, zależnie od potrzeb projektu i poziomu zaawansowania użytkownika. Najczęściej wykorzystywane metody to:

  • Notebook jako API – publikowanie notebooka jako endpointu HTTP za pomocą funkcji jobs lub Databricks Repos.
  • Databricks REST API – wykorzystanie wbudowanego API platformy do zarządzania zasobami i uruchamiania zadań.
  • Custom Flask API – uruchomienie serwera Flask w klastrze Databricks i wystawienie własnych endpointów HTTP (np. z wykorzystaniem ngrok lub Azure App Service).

2. Porównanie metod tworzenia API

Metoda Zalety Ograniczenia
Notebook jako API Łatwe wdrożenie, integracja z Databricks Jobs, brak potrzeby pisania dodatkowego backendu Ograniczone możliwości obsługi żądań HTTP, brak zaawansowanej logiki routingu
Databricks REST API Stabilność i bezpieczeństwo, pełna integracja z platformą, gotowe metody Brak wsparcia dla niestandardowych operacji biznesowych bezpośrednio
Custom Flask API Pełna kontrola nad logiką oraz strukturą API Wymaga konfiguracji, utrzymania serwera i dodatkowych mechanizmów bezpieczeństwa

3. Przykładowy kod: Notebook jako prosty endpoint

Poniższy przykład pokazuje, jak utworzyć prosty notebook w Pythonie, który przyjmuje parametr wejściowy i zwraca wynik przetwarzania:

dbutils.widgets.text("input", "")
input_value = dbutils.widgets.get("input")

# Przykładowa logika przetwarzania
def process(value):
    return f"Wartość przetworzona: {value.upper()}"

print(process(input_value))

Tak przygotowany notebook można uruchamiać jako zadanie Databricks (Job), przekazując parametry z poziomu PowerApps przez wywołanie odpowiedniego endpointu REST API.

4. Kwestie do rozważenia przy projektowaniu API

  • Wydajność – API uruchamiane na żądanie może generować wyższe opóźnienia. Warto rozważyć klastrowanie i cache’owanie wyników.
  • Bezpieczeństwo – wszystkie endpointy powinny być zabezpieczone autoryzacją, np. tokenem OAuth 2.0.
  • Skalowalność – używanie funkcji serverless lub dedykowanych endpointów może poprawić skalowalność rozwiązania.

Wybór odpowiedniego podejścia zależy od wymagań funkcjonalnych, poziomu kontroli nad logiką backendową oraz oczekiwanego czasu odpowiedzi. W dalszych sekcjach zostaną omówione sposoby integracji z PowerApps oraz przykłady realnych zastosowań.

Łączenie PowerApps z Azure Databricks przez konektory lub API

Integracja PowerApps z Azure Databricks może być zrealizowana na dwa główne sposoby: poprzez konektory lub interfejsy API. Wybór odpowiedniego podejścia zależy od poziomu zaawansowania użytkownika, wymagań dotyczących bezpieczeństwa oraz rodzaju operacji, które mają być wykonywane.

Porównanie podejść

Metoda Opis Zalety Wady
Konektory (np. HTTP, niestandardowy konektor) Umożliwiają połączenie z serwisem REST API udostępnionym przez Azure Databricks.
  • Prostsze do zaimplementowania w PowerApps
  • Nie wymaga tworzenia logiki w aplikacji
  • Ograniczona elastyczność
  • Mniejsze możliwości kontroli nad żądaniami i odpowiedziami
API (np. REST API Databricks) Bezpośrednie wywoływanie endpointów API, np. uruchamianie notebooków lub pobieranie wyników zapytań.
  • Większa kontrola nad danymi wejściowymi/wyjściowymi
  • Lepsza skalowalność i rozszerzalność
  • Wymaga znajomości REST API i autoryzacji
  • Bardziej złożona konfiguracja

Przykład użycia konektora HTTP

Prostym sposobem integracji jest użycie konektora HTTP w PowerApps do wysyłania zapytań POST lub GET do udostępnionego endpointu Azure Databricks. Poniższy przykład fragmentu kodu pokazuje wysyłanie zapytania HTTP POST:

{
  "method": "POST",
  "url": "https://.azuredatabricks.net/api/2.0/jobs/run-now",
  "headers": {
    "Authorization": "Bearer ",
    "Content-Type": "application/json"
  },
  "body": {
    "job_id": 1234
  }
}

Takie podejście pozwala PowerApps na uruchamianie procesów analitycznych na żądanie, bez konieczności bezpośredniego dostępu użytkownika do Databricks.

Użycie niestandardowego konektora

Dla bardziej zaawansowanych scenariuszy możliwe jest utworzenie niestandardowego konektora w PowerApps, który mapuje wybrane endpointy Databricks API. Umożliwia to użytkownikom interakcję z Databricks w sposób bardziej zintegrowany i konfigurowalny.

Podsumowując, wybór metody połączenia powinien być oparty na wymaganiach projektu, poziomie umiejętności zespołu oraz stopniu złożoności przetwarzanych danych.

💡 Pro tip: Utwórz niestandardowy konektor mapujący tylko potrzebne endpointy Databricks i poprzedź go warstwą pośrednią (Azure API Management lub Azure Functions), aby uprościć wywołania z PowerApps, ukryć złożoność API i centralnie zarządzać limitami oraz autoryzacją. Dla zadań długotrwałych stosuj wzorzec asynchroniczny: jobs/run-now + późniejsze odpytywanie statusu/rezultatów.

Praktyczne przykłady zastosowań integracji

Połączenie PowerApps z Azure Databricks otwiera szerokie możliwości w zakresie tworzenia inteligentnych aplikacji biznesowych, które potrafią przetwarzać dane w czasie rzeczywistym, analizować je i prezentować użytkownikowi końcowemu w formie przyjaznego interfejsu. Poniżej przedstawiamy kilka praktycznych scenariuszy, które obrazują potencjał tej integracji:

  • Analiza predykcyjna w aplikacjach biznesowych – PowerApps może pobierać wyniki modeli uczenia maszynowego uruchamianych w Databricks, np. prognozy sprzedaży czy ryzyka klienta, i prezentować je w formie dynamicznych formularzy lub dashboardów.
  • Raportowanie w czasie rzeczywistym – dzięki integracji możliwe jest tworzenie aplikacji, które na bieżąco pobierają dane z Databricks (np. logi IoT, dane z systemów ERP) i wizualizują je w PowerApps.
  • Zautomatyzowane podejmowanie decyzji – użytkownicy mogą podejmować decyzje (np. zatwierdzenie wniosku, modyfikacja limitów) na podstawie analiz przygotowanych w Databricks, bezpośrednio z poziomu aplikacji PowerApps.
  • Personalizacja doświadczenia klienta – PowerApps, zasilane danymi segmentacyjnymi lub behawioralnymi przetworzonymi w Databricks, może dynamicznie zmieniać zawartość formularzy lub ofert.
  • Interaktywna eksploracja danych – użytkownicy biznesowi mogą korzystać z aplikacji PowerApps do zadawania zapytań ad hoc, które są przekazywane do Databricks w celu przetworzenia i zwrócenia wyników analitycznych.

Dla zobrazowania jednego z powyższych przypadków, poniżej przedstawiamy uproszczony przykład, jak PowerApps może komunikować się z modelem ML udostępnionym przez Azure Databricks za pomocą REST API:

// Przykład wywołania API z PowerApps za pomocą funkcji Power Automate
ClearCollect(
   WynikPredykcji,
   PowerAutomateFlow.Run("ID_Klienta", "WartośćParametru")
)

W powyższym scenariuszu, przepływ Power Automate pełni rolę pośrednika między PowerApps a końcówką API w Databricks. Dzięki temu można łatwo skalować rozwiązanie, a także ograniczyć bezpośredni dostęp użytkownika do danych źródłowych.

Poniższa tabela przedstawia zestawienie typowych zastosowań integracji oraz korzyści, jakie przynosi użytkownikom biznesowym:

Zastosowanie Opis Korzyści
Prognozowanie popytu Model ML w Databricks przewiduje zapotrzebowanie na produkty Lepsze planowanie zakupów i redukcja strat magazynowych
Skoring klientów Algorytm ocenia ryzyko kredytowe klientów Wsparcie decyzji kredytowych w aplikacjach sprzedażowych
Monitorowanie produkcji Analiza danych z czujników w czasie rzeczywistym Szybka reakcja na anomalia i awarie
Obsługa reklamacji PowerApps prezentuje sugestie działań na podstawie analizy danych Wyższa efektywność obsługi klienta

Dzięki połączeniu PowerApps z Azure Databricks, możliwe jest tworzenie nowoczesnych aplikacji no-code/low-code, które integrują zaawansowaną analitykę danych z intuicyjnym interfejsem użytkownika. Taka synergia narzędzi znacząco przyspiesza wdrażanie rozwiązań biznesowych opartych na danych. Jeśli chcesz rozwinąć swoje umiejętności w tym obszarze, sprawdź nasz kurs PowerApps średniozaawansowany.

Zarządzanie bezpieczeństwem i autoryzacją

Bezpieczna integracja PowerApps z Azure Databricks wymaga szczególnej uwagi w zakresie autoryzacji użytkowników i ochrony przesyłanych danych. W tej sekcji omówimy kluczowe mechanizmy zabezpieczeń, które należy rozważyć przy łączeniu obu środowisk, oraz przedstawimy podstawowe różnice między najczęściej stosowanymi podejściami.

Główne mechanizmy autoryzacji

  • Azure Active Directory (Azure AD): Najczęściej stosowane rozwiązanie do zarządzania tożsamościami. Umożliwia autoryzację użytkowników i aplikacji poprzez tokeny OAuth 2.0.
  • Tokeny osobiste (Personal Access Tokens - PAT): Stosowane głównie w dostępie do REST API Databricks. Mniej bezpieczne niż Azure AD, ale przydatne w środowiskach automatyzacji lub testowych.
  • Managed Identity (tożsamość zarządzana): Używana w aplikacjach działających w usługach Azure (np. Logic Apps, Azure Functions) do bezpiecznego uwierzytelniania bez konieczności przechowywania poświadczeń.

Porównanie metod autoryzacji

Metoda Bezpieczeństwo Zastosowanie Złożoność konfiguracji
Azure AD OAuth 2.0 Wysokie Integracja produkcyjna, dostęp użytkowników Średnia
Tokeny osobiste (PAT) Średnie Testowanie, automatyzacja z ograniczonym zakresem Niska
Managed Identity Wysokie Usługi uruchamiane w Azure, integracje bez użytkownika Wysoka

Przykład: Uzyskiwanie tokena Azure AD

Przy autoryzacji za pomocą Azure AD, aplikacja PowerApps (lub pośredniczący Azure Function/Logic App) może uzyskać token dostępu w taki sposób:

POST https://login.microsoftonline.com/<tenant_id>/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
&client_id=<app_id>
&client_secret=<client_secret>
&scope=https://databricks.azure.net/.default

Otrzymany token można następnie używać w nagłówkach żądań do API Databricks:

Authorization: Bearer <access_token>

Najlepsze praktyki

  • Stosuj najmniejsze możliwe uprawnienia (principle of least privilege).
  • Unikaj przechowywania poświadczeń w kodzie – używaj Azure Key Vault lub Managed Identity.
  • Regularnie rotuj tokeny i klucze dostępu.
  • Monitoruj dostęp do zasobów za pomocą Azure Monitor i logów audytowych z Databricks.

Wybór odpowiedniej metody autoryzacji zależy od konkretnego scenariusza integracyjnego, wymagań bezpieczeństwa oraz środowiska, w którym działa aplikacja PowerApps.

💡 Pro tip: W produkcji preferuj Azure AD (client credentials) lub Managed Identity zamiast PAT i przechowuj sekrety w Azure Key Vault; ogranicz uprawnienia do minimum i regularnie rotuj klucze. Wzmocnij kontrolę dostępu zasadami warunkowymi oraz precyzyjnymi scope’ami (https://databricks.azure.net/.default).

Typowe problemy i sposoby ich rozwiązywania

Integracja PowerApps z Azure Databricks, mimo że otwiera wiele możliwości, może wiązać się z różnymi wyzwaniami technicznymi i konfiguracyjnymi. Poniżej przedstawiamy najczęstsze problemy, które mogą napotkać użytkownicy, oraz sugerowane sposoby ich rozwiązania.

  • Brak autoryzacji lub błędy uwierzytelniania
    Problem: Aplikacja PowerApps nie może połączyć się z API Databricks, mimo że adres URL i metoda są poprawne. Często pojawia się błąd 401 Unauthorized.
    Rozwiązanie: Sprawdź, czy token dostępu (Bearer Token) jest aktualny i czy użytkownik posiada odpowiednie uprawnienia w Azure Databricks. W przypadku wykorzystania Azure Active Directory, upewnij się, że rejestracja aplikacji została poprawnie skonfigurowana.
  • Błędy CORS (Cross-Origin Resource Sharing)
    Problem: Próba wywołania API z poziomu PowerApps kończy się błędem związanym z polityką CORS.
    Rozwiązanie: Azure Databricks nie obsługuje bezpośrednio CORS w klasyczny sposób, dlatego najlepiej pośredniczyć przez Azure API Management lub Azure Functions, które mogą odpowiednio ustawić nagłówki CORS.
  • Problemy z formatem danych wejściowych/wyjściowych
    Problem: PowerApps nie przetwarza zwracanych danych lub błędnie wysyła dane do usługi Databricks, co skutkuje błędami JSON lub pustymi odpowiedziami.
    Rozwiązanie: Upewnij się, że dane przesyłane z PowerApps są serializowane jako JSON i zgodne ze strukturą oczekiwaną przez notebooki lub endpointy w Databricks. Sprawdź nagłówek Content-Type (powinien być ustawiony na application/json).
  • Ograniczenia wydajności i timeouty
    Problem: Dłużej działające obliczenia w Databricks powodują przekroczenie czasu odpowiedzi w PowerApps.
    Rozwiązanie: Rozważ optymalizację notebooków w Databricks lub zastosowanie podejścia asynchronicznego, np. kolejkowania z użyciem Azure Service Bus i powiadomień po zakończeniu przetwarzania.
  • Brak danych w PowerApps mimo poprawnego połączenia
    Problem: Wywołanie API z Databricks nie zwraca wyników, mimo że notebook działa poprawnie ręcznie.
    Rozwiązanie: Sprawdź, czy endpoint Databricks rzeczywiście zwraca dane przez dbutils.notebook.exit(json.dumps(...)) lub inną metodę. PowerApps oczekuje odpowiedzi w formacie JSON – niedozwolone są np. dane surowe czy komunikaty tekstowe.

Kluczem do skutecznego rozwiązywania problemów jest dokładne logowanie w PowerApps oraz śledzenie logów w Azure Databricks, co pozwala zidentyfikować, na którym etapie dochodzi do błędu. Zaleca się również testowanie poszczególnych komponentów integracji niezależnie, zanim połączy się je w jeden przepływ.

💡 Pro tip: Przy błędach 401/CORS lub nieprawidłowym JSON loguj pełne żądania/odpowiedzi i testuj komponenty osobno, upewniając się, że Content-Type=application/json, a notebook zwraca dane przez dbutils.notebook.exit(JSON). Aby uniknąć timeoutów w długich obliczeniach, deleguj wywołania przez Azure Function/APIM i stosuj asynchroniczne odpytywanie statusu jobów.

Podsumowanie i najlepsze praktyki

Integracja PowerApps z Azure Databricks pozwala połączyć elastyczność budowy aplikacji low-code z mocą obliczeniową i analityczną platformy Big Data. Dzięki temu możliwe jest szybkie tworzenie interfejsów użytkownika dla zaawansowanych operacji analitycznych oraz integracja wyników analiz bezpośrednio w aplikacjach biznesowych.

Podstawową różnicą między tymi dwoma rozwiązaniami jest ich rola w architekturze aplikacji: PowerApps skupia się na logice interfejsu oraz interakcji użytkownika z danymi, natomiast Azure Databricks odpowiada za przetwarzanie danych, uczenie maszynowe oraz analizy w dużej skali. W połączeniu tworzą spójną platformę do budowy inteligentnych aplikacji biznesowych.

Aby uzyskać stabilne i wydajne połączenie między PowerApps a Azure Databricks, warto kierować się poniższymi najlepszymi praktykami:

  • Planowanie architektury: Zaplanuj sposób przepływu danych i odpowiedzialności między komponentami – ogranicz logikę biznesową w PowerApps na rzecz wykorzystania funkcji i modeli w Databricks.
  • Użycie API lub konektorów: Wybierz najbardziej optymalny sposób integracji – REST API sprawdza się lepiej przy większej elastyczności, konektory są łatwiejsze w konfiguracji.
  • Bezpieczeństwo danych: Stosuj mechanizmy uwierzytelniania (np. OAuth 2.0), szyfrowanie transmisji danych i ograniczaj dostęp do zasobów na poziomie użytkownika oraz aplikacji.
  • Optymalizacja wydajności: Minimalizuj liczbę zapytań i ładuj tylko niezbędne dane, aby zapewnić płynność działania aplikacji.
  • Monitorowanie i logowanie błędów: Wdrażaj mechanizmy logowania, obsługi wyjątków i monitorowania wykonania zapytań oraz funkcji, zwłaszcza po stronie Databricks.

Stosując powyższe zalecenia, można znacząco zwiększyć skuteczność integracji i tworzyć aplikacje, które będą zarówno wydajne, jak i łatwe w utrzymaniu. Niezależnie od specyfiki rozwiązania, kluczowe jest zrozumienie ról obu technologii i świadome zaprojektowanie ich współpracy.

icon

Formularz kontaktowyContact form

Imię *Name
NazwiskoSurname
Adres e-mail *E-mail address
Telefon *Phone number
UwagiComments