Omówienie źródeł danych dla aplikacji kanwy w usłudze Power Apps

Większość aplikacji w usłudze Power Apps używa zewnętrznych informacji przechowywanych w usługach w chmurze zwanych źródłami danych. Typowym przykładem jest tabela w pliku programu Excel przechowywana w usłudze OneDrive dla Firm. Aplikacje uzyskują dostęp do tych źródeł danych przy użyciu połączeń.

W tym artykule omówiono różne rodzaje źródeł danych oraz sposób pracy ze źródłami danych w formie tabeli.

Utworzenie aplikacji wykonującej podstawowe operacje odczytu i zapisu w źródle danych jest proste. Niemniej czasami chcemy zyskać większą kontrolę nad sposobem przepływu danych w komunikacji z naszą aplikacją. W tym artykule opisano funkcje Patch, DataSourceInfo, Validate i Errors, które zapewniają większą kontrolę.

Rodzaje źródeł danych

Źródła danych mogą być połączone z usługą w chmurze lub mogą być lokalne dla aplikacji.

Połączone źródła danych

Najbardziej typowe źródła danych to tabele, które służą do pobierania i przechowywania informacji. Połączeń ze źródłami danych można użyć do odczytywania i zapisywania danych w skoroszytach programu Microsoft Excel, listach programu SharePoint, tabelach SQL i wielu innych formatach, które można przechowywać w usługach w chmurze, takich jak OneDrive dla Firm, DropBox i SQL Server.

Źródła danych inne niż tabele obejmują pocztę e-mail, kalendarze, serwis Twitter i powiadomienia, ale w tym artykule nie omówiono tych innych typów źródeł danych.

Lokalne źródła danych

Przy użyciu kontrolek Galeria, Formularz wyświetlania i Formularz edycji można łatwo utworzyć aplikację, która odczytuje dane ze źródła danych i zapisuje je w nim. Aby rozpocząć, przeczytaj artykuł Omówienie formularzy danych.

Jeśli chcesz, aby usługa Power Apps utworzyła aplikację z danych, używane są te kontrolki. W tle aplikacja używa tabeli wewnętrznej do przechowywania danych pochodzących ze źródła danych i manipulowania nimi.

Specjalnym rodzajem źródła danych jest kolekcja, która jest lokalna dla aplikacji i nie jest wspierana przez połączenie z usługą w chmurze, więc informacje w niej zawarte nie mogą być współdzielone na różnych urządzeniach dla tego samego użytkownika lub pomiędzy różnymi użytkownikami. Kolekcje można ładować i zapisywać lokalnie.

Rodzaje tabel

Tabele wewnętrzne dla aplikacji Power Apps są stałymi wartościami, tak jak liczba lub ciąg jest wartością. Tabele wewnętrzne nie są przechowywane w żadnym miejscu, po prostu istnieją w pamięci aplikacji. Nie można bezpośrednio modyfikować struktury i danych tabeli. Zamiast tego można utworzyć nową tabelę przy użyciu formuły: używając tej formuły do utworzenia zmodyfikowanej kopii oryginalnej tabeli.

Tabele zewnętrzne są przechowywane w źródle danych w celu późniejszego pobierania i udostępniania. Usługa Power Apps zapewnia „połączenia” umożliwiające odczytywanie i zapisywanie przechowywanych danych. W ramach połączenia można uzyskać dostęp do wielu tabel zawierających informacje. Po wybraniu tabel do użycia w aplikacji każda z nich stanie się oddzielnym źródłem danych.

Artykuł Praca z tabelami zawiera więcej szczegółowych informacji o tabelach wewnętrznych, które mają również zastosowanie do tabel zewnętrznych umieszczonych w usłudze w chmurze.

Praca z tabelami

Źródeł danych w formie tabel można używać w taki sam sposób, jak wewnętrznych tabel usługi Power Apps. Podobnie jak w przypadku tabeli wewnętrznej każde źródło danych ma rekordy, kolumny oraz właściwości, których można używać w formułach. Dodatkowo:

  • Źródło danych ma te same nazwy kolumn i typy danych co podstawowa tabela w połączeniu.

    Uwaga

    W przypadku źródeł danych programu SharePoint i Excel, które zawierają nazwy kolumn ze spacjami, usługa Power Apps zastępuje każdą spację wartością „_x0020_”. Na przykład tekst „Nazwa kolumny” w SharePoint lub Excel będzie widoczny jako „Nazwa_x0020_kolumny” w Power Apps w przypadku wyświetlania w układzie danych lub stosowania w formule.

  • Źródło danych zostanie załadowane z usługi automatycznie po załadowaniu aplikacji. Możesz wymusić odświeżenie danych przy użyciu funkcji Refresh.

  • Po uruchomieniu aplikacji użytkownicy mogą tworzyć, modyfikować i usuwać rekordy oraz wypychać te zmiany z powrotem do podstawowej tabeli w usłudze.

    • Rekordy można tworzyć przy użyciu funkcji Patch i Collect.
    • Rekordy można modyfikować przy użyciu funkcji Patch, Update i UpdateIf.
    • Rekordy można usuwać przy użyciu funkcji Remove i RemoveIf.
    • Błędy podczas pracy ze źródłem danych są dostępne za pośrednictwem funkcji Errors.
  • Funkcje DataSourceInfo, Defaults i Validate zapewniają informacje o źródle danych, których można używać do optymalizowania interfejsu użytkownika.

Tworzenie źródeł danych

Usługi Power Apps nie można użyć do utworzenia połączonego źródła danych lub zmodyfikowania jego struktury. Źródło danych musi już istnieć w jakimś miejscu w usłudze. Aby na przykład utworzyć tabelę w skoroszycie programu Excel przechowywaną w usłudze OneDrive, należy najpierw użyć usługi Excel Online w usłudze OneDrive w celu utworzenia skoroszytu. Następnie należy utworzyć połączenie ze skoroszytem z poziomu aplikacji.

Niemniej można tworzyć i modyfikować źródła danych w formie kolekcji w aplikacji, ale są one jedynie tymczasowe.

Wyświetlanie jednego lub większej liczby rekordów

Powyższy diagram przedstawia przepływ informacji, gdy aplikacja odczytuje informacje w źródle danych:

  • Informacje są przechowywane i udostępniane za pośrednictwem usługi magazynu (w tym przypadku listy programu SharePoint w witrynie usługi Office 365).
  • Połączenie udostępnia informacje aplikacji. Połączenie zajmuje się uwierzytelnieniem użytkownika, aby zapewnić dostęp do informacji.
  • Po uruchomieniu aplikacji lub użyciu funkcji Refresh informacje są pobierane z połączenia do źródła danych w aplikacji w celu użycia lokalnego.
  • Formuły są używane do odczytywania informacji i ujawniania ich w kontrolkach widocznych dla użytkownika. Rekordy źródła danych można wyświetlić, używając galerii na ekranie i łącząc właściwość Items ze źródłem danych: Gallery.Items = DataSource. Kontrolki w galerii łączy się z galerią przy użyciu właściwości Default kontrolek.
  • Źródło danych również jest tabelą. Dlatego można użyć funkcji Filter, Sort, AddColumns i innych, aby dostosować i rozszerzyć źródło danych przed użyciem go w całości. Ponadto można użyć funkcji Lookup, First, Last i innych do pracy na poszczególnych rekordach.

Modyfikowanie rekordu

W poprzedniej sekcji pokazano, jak można odczytywać źródło danych. Pamiętaj, że strzałki w powyższym diagramie są jednokierunkowe. Zmiany w źródle danych nie są wypychane z powrotem za pośrednictwem tych samych formuł, których użyto do pobrania danych. Zamiast tego używa się nowych formuł. Często do edytowania rekordu używa się innego ekranu niż w przypadku przeglądania rekordów, zwłaszcza na urządzeniach przenośnych.

Należy pamiętać, że istniejący rekord źródła danych musi oryginalnie pochodzić ze źródła danych, aby można było go zmodyfikować. Rekord mógł przejść przez galerię, zmienną kontekstową i dowolną liczbę formuł, ale jego pochodzenie powinno dać się prześledzić z powrotem do źródła danych. Jest to ważne, ponieważ wraz z rekordem przenoszoną są dodatkowe informacje jednoznacznie go identyfikujące, dzięki czemu na pewno modyfikujesz właściwy rekord.

Na powyższym diagramie przedstawiono przepływ informacji w przypadku aktualizacji źródła danych:

  • Kontrolka Formularz edycji zapewnia kontener dla kart wejściowych, które składają się z kontrolek wejściowych użytkownika, np. kontrolki wprowadzania tekstu lub suwaka. Właściwości DataSource i Item są używane do identyfikowania rekordu do edytowania.
  • Każda karta wejściowa ma właściwość Default, która zazwyczaj jest ustawiona na pole rekordu ThisItem formularza. Kontrolki na karcie wejściowej następnie przyjmują swoje wartości wejściowe z właściwości Default. Zwykle nie należy modyfikować tego elementu.
  • Każda karta wejściowa ujawnia właściwość Update. Ta właściwość mapuje dane wejściowe użytkownika na konkretne pole rekordu w celu ich zapisania zwrotnego w źródle danych. Zwykle nie należy modyfikować tego elementu.
  • Kontrolka przycisku lub obrazu na ekranie umożliwia użytkownikom zapisanie zmian w rekordzie. Formuła OnSelect kontrolki wywołuje funkcję SubmitForm, aby wykonać to zadanie. Funkcja SubmitForm odczytuje wszystkie właściwości Update kart i używa tych informacji do zapisu zwrotnego w źródle danych.
  • Czasami będą występować problemy. Może dojść do przerwy w połączeniu sieciowym lub wykonania przez usługę walidacji, o której aplikacja nie miała informacji. Właściwości Error i ErrorKind kontrolki formularza zapewniają dostępność tych informacji, więc można je wyświetlić użytkownikowi.

Aby uzyskać bardziej szczegółową kontrolę nad procesem, można również użyć funkcji Patch i Errors. Kontrolka Formularz edycji ujawnia właściwość Updates, aby można było odczytać wartości pól w formularzu. Można również użyć tej właściwości, aby wywołać niestandardowy łącznik w połączeniu, całkowicie pomijając funkcje Patch i SubmitForm.

Sprawdzanie poprawności

Przed wprowadzeniem zmian w rekordzie aplikacja powinna w miarę możliwości upewnić się, że zmiana będzie akceptowalna. Istnieją dwa powody takiego działania:

  • Natychmiastowe informacje zwrotne dla użytkownika. Najlepszy moment na rozwiązanie problemu to chwila, w której problem wystąpi, gdy użytkownik jeszcze dobrze go pamięta. Dosłownie w przypadku każdego naciśnięcia ekranu lub klawisza może pojawić się czerwony tekst identyfikujący problem z wpisem.
  • Mniejszy ruch sieciowy i mniejsze opóźnienia dla użytkownika. Więcej problemów wykrytych w aplikacji oznacza mniejszą liczbę konwersacji za pośrednictwem sieci, których celem jest wykrywanie i rozwiązywanie problemów. Każda konwersacja zajmuje czas, a użytkownik musi czekać na wznowienie pracy.

Usługa Power Apps oferuje dwa narzędzia umożliwiające walidację:

  • Źródło danych może zapewnić informacje o elementach prawidłowych i nieprawidłowych. Na przykład liczby mogą mieć wartości minimalne i maksymalne. Może też być wymagany co najmniej jeden wpis. Do tych informacji można uzyskać dostęp przy użyciu funkcji DataSourceInfo.
  • Funkcja Validate używa tych samych informacji do sprawdzenia wartości pojedynczej kolumny lub całego rekordu.

Obsługa błędów

Wspaniale. Rekord przeszedł walidację. Czas na zaktualizowanie rekordu przy użyciu funkcji Patch.

Niemniej nadal może występować problem. Sieć nie działa, walidacja po stronie usługi nie powiodła się lub użytkownik nie ma odpowiednich uprawnień — jest to tylko kilka możliwych błędów, które może napotkać aplikacja. Musi ona reagować odpowiednio na tego typu sytuacje, zapewniając użytkownikowi informacje zwrotne i możliwości rozwiązania problemów.

Jeśli wystąpią problemy związane ze źródłem danych, aplikacja będzie automatycznie rejestrować informacje o błędach i udostępniać je za pośrednictwem funkcji Errors. Błędy są powiązane z rekordami, w których wystąpiły problemy. Jeśli problem może być naprawiony przez użytkownika, np. problem z walidacją, użytkownik może ponownie przesłać rekord, a błędy zostaną wyczyszczone.

Jeśli błąd występuje podczas tworzenia rekordu przy użyciu funkcji Patch lub Collect, nie ma rekordu, z którym można powiązać jakiekolwiek błędy. W takim przypadku funkcja Patch zwróci wartość pustą i można jej użyć jako argumentu rekordu w funkcji Errors. Błędy związane z tworzeniem są usuwane podczas następnej operacji.

Funkcja Errors zwraca tabelę z informacjami o błędzie. Informacje te mogą zawierać informacje o kolumnie, jeśli błąd może być przypisany do konkretnej kolumny. Używaj komunikatów o błędach na poziomie kolumny w kontrolkach etykiety znajdujących się w pobliżu lokalizacji kolumny na ekranie edycji. Używaj komunikatów o błędach na poziomie rekordu, w których pozycja Column w tabeli błędu ma wartość pustą, w lokalizacji w pobliżu przycisku Zapisz dla całego rekordu.

Praca z dużymi źródłami danych

Podczas tworzenia raportów na podstawie dużych źródeł danych (zawierających miliony rekordów) należy minimalizować ruch sieciowy. Załóżmy, że chcemy uzyskać raport dotyczący wszystkich klientów z właściwością StatusCode o wartości „Platinum” w Nowym Jorku. Ponadto załóżmy, że tabela klientów zawiera miliony rekordów.

Nie chcesz przenosić milionów klientów do aplikacji, a następnie wybierać żądanych rekordów z całej listy. Lepiej będzie, jeśli proces wyboru zostanie obsłużony w usłudze w chmurze, w której przechowywana jest tabela, a przez sieć zostaną wysłane tylko wybrane rekordy.

Wiele funkcji (jednak nie wszystkie) umożliwiających wybieranie rekordów można delegować, co oznacza, że są uruchamiane w usłudze w chmurze. Możesz dowiedzieć się, jak to zrobić, czytając o delegowaniu.

Kolekcje

Kolekcje są specjalnym rodzajem źródła danych. Są one lokalne dla aplikacji i nie są wspierane przez połączenie z usługą w chmurze, więc informacje w nich zawarte nie mogą być współdzielone na różnych urządzeniach przez tego samego użytkownika ani między różnymi użytkownikami. Działają podobnie jak inne źródła danych z pewnymi wyjątkami:

  • Kolekcje można tworzyć dynamicznie przy użyciu funkcji Collect. Nie trzeba ustawiać ich z wyprzedzeniem, tak jak w przypadku źródeł danych opartych na połączeniu.
  • Kolumny kolekcji można modyfikować w dowolnym momencie przy użyciu funkcji Collect.
  • Kolekcje zezwalają na zduplikowane rekordy. W kolekcji może istnieć więcej niż jedna kopia tego samego rekordu. Funkcje takie jak Remove będą działać względem pierwszego znalezionego dopasowania, chyba że zostanie podany argument All.
  • Można użyć funkcji SaveData i LoadData do zapisywania i ponownego ładowania kopii kolekcji. Informacje są przechowywane w prywatnej lokalizacji, do której nie mają dostępu inni użytkownicy, aplikacje ani urządzenia.
  • Można użyć kontrolek Eksportuj i Importuj, aby zapisać i ponownie załadować kopię kolekcji w pliku, z którym użytkownik może wchodzić w interakcje.

Aby uzyskać więcej informacji na temat pracy z kolekcją jako źródłem danych, zobacz Tworzenie i aktualizowanie kolekcji.

Kolekcje są często używane do przechowywania stanu globalnego dla aplikacji. Aby uzyskać informacje o dostępnych opcjach zarządzania stanem, zobacz Praca ze zmiennymi.