Integracja danych z SharePoint do Azure Data Lake

Czy w Twojej organizacji jest potrzeba integracji danych słownikowych, które są utrzymywane przez inne działy? Czy potrzebujesz narzędzia, w którym użytkownicy raportów będą mogli dodawać komentarze, które później zostaną wyświetlane na raporcie? Czy po prostu potrzebujesz rozwiązania do łatwego wprowadzania, edycji i usuwania rekordów? Jeśli odpowiedź na przynajmniej jedno z powyższych pytań brzmi TAK to znaczy, że SharePoint może się okazać doskonałym rozwiązaniem.
Azure oferuje kilka możliwości do integracji takich danych. Jedna z nich to Azure Data Factory, który udostępnia dedykowany konektor do kopiowania danych z SharePoint. Niestety nie można kopiować danych bezpośrednio z pliku, ale jest możliwość integracji danych z listy online. Stworzenie pipelinu jest bardzo intuicyjne i proste, ale żeby przejść do tego etapu trzeba najpierw zadbać o poprawne nadanie uprawnień.
Ale zaczynając od początku. Czy wiesz jak stworzyć listę w SharePoint?
Można ją utworzyć na trzy sposoby:
1. Utworzyć pustą listę i dodawać rekordy ręcznie.
2. Utworzyć listę z pliku excel. Dane w pliku muszą być zapisane w formie tabeli.
3. Utworzyć listę z istniejącej listy.
Poniżej widok z tworzenia listy z pliku excel.

Rys 1. Tworzenie SharePoint Online List z pliku excel.
Na jakie aspekty szczególnie należy zwrócić uwagę?
1. Nie można zaimportować kolumn technicznych, np. ID. Ta kolumna jest tworzona dynamicznie w przypadku dodania/usunięcia rekordów i można ją wyświetlić po utworzeniu listy ->
Add Column -> Show/hide columns -> ID -> Apply.
Można pokazać również takie kolumny takie jak Modified, Created, Modified By, Created By itp.
2. Każda lista domyślnie zawiera kolumnę oznaczoną jako Title. Jest ona niezbędna do otwierania i edycji elementów listy. Jeśli tworzymy listę z pliku excel, jedna z kolum musi być typu Title i taką też przyjmie nazwę. Nazwa może być zmieniona po dodaniu listy, natomiast z perspektywy Azure Data Factory czy Logic Apps będzie identyfikowana jako Title.
3. Można ustawić, aby kolumna zawierała tylko unikalne wartości, dzięki czemu unikniemy duplikatów. Należy jednak pamiętać, że ta opcja nie jest dostępna dla kolumny Title.
Mamy utworzoną listę, ale na podstawie jakich uprawnień Azure Data Factory będzie mógł pobrać dane z SharePoint?
Jedyną opcją autentykacji to uwierzytelnienie za pomocą service principal, czyli zarejestrowanej jednostki aplikacji w Azure Active Directory. Service Principal to tożsamość, która pozwala na dostęp do zasobów platformy Azure. Dostęp jest ograniczany poprzez przypisywanie ról. Ze względów bezpieczeństwa zaleca się używanie service principal przy procesach automatycznych zamiast używania tożsamości danego użytkownika. Najprościej mówiąc to taki super user, który czasem jest jedyną możliwością autentykacji.
Więcej o service principal znajdziesz tutaj -> https://docs.microsoft.com/pl-pl/azure/active-directory/develop/app-objects-and-service-principals
Jakie dane są potrzebne, aby service principal miał dostęp do SharePoint Online List z poziomu Azure Data Factory?
1. Application ID, czyli identyfikator service principal.
2. Application key, czyli klucz dostępu service principal.
3. Tenant ID, czyli identyfikator Azure Active Directory.
Co należy zrobić dalej?
1. Mieć przypisaną rolę Ownera w SharePoint.
2. Przejść do poniższej strony :
https://[SharePoint_URL]/_layouts/15/appinv.aspx
W miejsce [SharePoint_URL] należy wpisać url swojej strony w SharePoint.
3. Następnie pojawi się okno, które należy uzupełnić o poniższe dane:

Rys 2. Nadanie uprawnień service principal do SharePoint.
a) App ID - identyfikator service principal.
b) Title – dowolny tytuł aplikacji, np.: nazwa service principal.
c) App Domain – localhost.com
d) Redirect URL - https://www.localhost.com
e) Permission request XML:
<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="Read"/>
</AppPermissionRequests>
Po wykonaniu tego kroku można przejść do Azure Data Factory i utworzyć linked service oraz dataset (typ SharePoint Online List). Teraz tylko pipeline z Copy Activity, gdzie source to lista SharePoint a sink Azure Data Lake i integracja danych jest gotowa.
Może zastanawiasz się, co zrobić w sytuacji, gdy nie chcemy korzystać z listy i potrzebujemy zintegrować dane z pliku? W tym przypadku można skorzystać z jednej z poniższych możliwości:
1. Pipeline w Azure Data Factory i Web activity.
2. Logic Apps.
Więcej o Logic Apps i SharePoint znajdziesz tutaj ->
https://docs.microsoft.com/pl-pl/azure/connectors/connectors-create-api-sharepoint
Na szczególną uwagę zasługują Logic Apps, które zaskakują swoimi możliwościami. To bardzo wszechstronne narzędzie, które daje możliwość kopiowania danych z pliku między innymi do Azure Data Lake lub SQL Server.
Jak widać, Azure nieustannie rozszerza możliwości bezpośredniej integracji pomiędzy komponentami, upraszając często skomplikowane techniki stosowane dotychczas przez programistów. To słuszny kierunek, budujący przewagę konkurencyjną całego środowiska Azure, jednocześnie podnosząc komfort pracy specjalistów i zmniejszając czas dostarczania rozwiązań. Zatem zachęcam do wypróbowania opisanego schematu przepływu danych.
Joanna Bednarska
Junior Business Intelligence Consultant
Źródło:
https://docs.microsoft.com/en-us/azure/data-factory/connector-sharepoint-online-list