Udostępnij za pośrednictwem


Kontrolowanie dostępu do konta magazynowego dla bezserwerowej puli SQL w usłudze Azure Synapse Analytics

Zapytanie bezserwerowej puli SQL odczytuje pliki bezpośrednio z usługi Azure Storage. Uprawnienia dostępu do plików w usłudze Azure Storage są kontrolowane na dwóch poziomach:

  • Poziom magazynu — użytkownik powinien mieć uprawnienia dostępu do podłożowych plików magazynu. Administrator magazynu powinien zezwolić głównej jednostce Microsoft Entra na odczyt/zapis plików lub wygenerować klucz sygnatury dostępu współdzielonego (SAS), który będzie używany do uzyskiwania dostępu do magazynu.
  • Poziom usługi SQL — użytkownik powinien mieć uprawnienie do odczytywania danych przy użyciu tabeli zewnętrznej lub wykonywania OPENROWSET funkcji. Przeczytaj więcej na temat wymaganych uprawnień w tej sekcji.

W tym artykule opisano typy poświadczeń, których można użyć, oraz sposób, w jaki wyszukiwanie poświadczeń jest wprowadzane dla użytkowników SQL i Microsoft Entra.

Uprawnienia do przechowywania

Bezserwerowa pula SQL w obszarze roboczym usługi Synapse Analytics może odczytywać zawartość plików przechowywanych w usłudze Azure Data Lake Storage. Należy skonfigurować uprawnienia do magazynu, aby umożliwić użytkownikowi wykonującemu zapytanie SQL odczytanie plików. Istnieją trzy metody włączania dostępu do plików:

  • Kontrola dostępu oparta na rolach (RBAC) umożliwia przypisanie roli użytkownikowi Microsoft Entra w dzierżawie, w której znajduje się magazyn. Czytelnik musi być członkiem jednej z ról: Czytelnik danych obiektu blob, Współautor danych obiektu blob lub Właściciel danych obiektu blob w koncie magazynu. Użytkownik, który zapisuje dane w Azure Storage, musi być członkiem roli Storage Blob Data Contributor lub Storage Blob Data Owner. Rola Właściciel magazynu nie oznacza, że użytkownik jest również właścicielem danych magazynu.
  • Listy kontroli dostępu (ACL) umożliwiają definiowanie precyzyjnych uprawnień do odczytu(R), zapisu(W) i Wykonywania(X) dla plików i katalogów w usłudze Azure Storage. ACL można przypisać użytkownikom Microsoft Entra. Jeśli użytkownicy chcą odczytać plik w ścieżce w usłudze Azure Storage, muszą mieć uprawnienie Wykonywania (X) ACL dla każdego folderu w ścieżce pliku oraz uprawnienie Odczytu (R) ACL do samego pliku. Dowiedz się więcej o ustawianiu uprawnień ACL w warstwie przechowywania.
  • Sygnatura dostępu współdzielonego umożliwia czytelnikowi dostęp do plików w usłudze Azure Data Lake Storage przy użyciu tokenu ograniczonego czasowo. Czytelnik nie musi nawet być uwierzytelniany jako użytkownik Firmy Microsoft Entra. Token SAS zawiera uprawnienia przyznane czytelnikowi oraz okres ważności tokenu. Token SAS jest dobrym wyborem dla użytkowników, którzy potrzebują dostępu na czas określony, a nawet nie muszą być w tej samej dzierżawie Microsoft Entra. Tokeny SAS można definiować na koncie magazynowym lub w określonych katalogach. Dowiedz się więcej o udzielaniu ograniczonego dostępu do zasobów w usłudze Azure Storage za pomocą sygnatur dostępu współdzielonego.

Alternatywnym rozwiązaniem jest publiczne udostępnienie plików przez zezwolenie na dostęp anonimowy. To podejście nie powinno być używane, jeśli masz dane niepubliczne.

Obsługiwane typy autoryzacji przechowywania

Użytkownik, który zalogował się do bezserwerowej puli SQL, musi być autoryzowany do uzyskiwania dostępu do plików i wykonywania zapytań względem plików w usłudze Azure Storage, jeśli pliki nie są publicznie dostępne. Do uzyskiwania dostępu do magazynu niepublicowego można użyć czterech typów autoryzacji: tożsamości użytkownika, sygnatury dostępu współdzielonego, jednostki usługi i tożsamości zarządzanej.

Uwaga

Przekazywanie w usłudze Microsoft Entra jest zachowaniem domyślnym podczas tworzenia obszaru roboczego.

Tożsamość użytkownika, znana również jako "przekazywanie Microsoft Entra", to rodzaj autoryzacji, w którym tożsamość użytkownika Microsoft Entra zalogowanego do bezserwerowej puli SQL jest wykorzystywana do autoryzacji dostępu do danych. Przed uzyskaniem dostępu do danych administrator usługi Azure Storage musi udzielić uprawnień użytkownikowi Firmy Microsoft Entra. Jak wskazano w tabeli Obsługiwane typy autoryzacji dla użytkowników bazy danych, nie jest to obsługiwane dla użytkowników typu SQL.

Ważne

Token uwierzytelniania Entra firmy Microsoft może być buforowany przez aplikacje klienckie. Na przykład usługa Power BI buforuje tokeny firmy Microsoft Entra i ponownie używa tego samego tokenu przez godzinę. Długotrwałe zapytania mogą zakończyć się niepowodzeniem, jeśli token wygaśnie w trakcie wykonywania zapytania. Jeśli występują błędy zapytań spowodowane przez token dostępu firmy Microsoft Entra, który wygasa w środku zapytania, rozważ przełączenie się na jednostkę usługi, tożsamość zarządzaną lub sygnaturę dostępu współdzielonego.

Aby uzyskać dostęp do danych, musisz należeć do roli Właściciela danych w obiekcie blob usługi Storage, Współautora danych w obiekcie blob usługi Storage lub Czytelnika danych w obiekcie blob usługi Storage. Alternatywnie można określić szczegółowe reguły ACL w celu uzyskania dostępu do plików i folderów. Nawet jeśli jesteś Właścicielem konta magazynu, nadal musisz dodać się do jednej z ról dotyczących danych obiektu Blob. Aby dowiedzieć się więcej na temat kontroli dostępu w usłudze Azure Data Lake Store Gen2, zapoznaj się z artykułem Kontrola dostępu w usłudze Azure Data Lake Storage Gen2 .

Scenariusze między dzierżawami

W przypadkach, gdy usługa Azure Storage znajduje się w innej dzierżawie niż bezserwerowa pula SQL usługi Synapse, autoryzacja za pośrednictwem zasobu usługi jest zalecaną metodą. Autoryzacja SAS jest również możliwa, podczas gdy Managed Identity nie jest obsługiwane.

Typ autoryzacji Magazyn chroniony przez zaporę ogniową magazyn niechroniony przez zaporę
SAS Obsługiwane Obsługiwane
Service Principal Nieobsługiwany Obsługiwane

Uwaga

Jeśli usługa Azure Storage jest chroniona przez zaporę usługi Azure Storage, jednostka usługi nie będzie obsługiwana.

Obsługiwane typy autoryzacji dla użytkowników baz danych

Poniższa tabela zawiera dostępne typy autoryzacji usługi Azure Storage dla różnych metod logowania do bezserwerowego punktu końcowego SQL usługi Azure Synapse Analytics:

Typ autoryzacji Użytkownik SQL Użytkownik firmy Microsoft Entra Jednostka usługi
Tożsamość użytkownika Nieobsługiwane Obsługiwane Obsługiwane
SAS Obsługiwane Obsługiwane Obsługiwane
Główna usługa Wspierane Obsługiwane Obsługiwane
Tożsamość zarządzana Wspierane Obsługiwane Obsługiwane

Obsługiwane magazyny i typy autoryzacji

Można użyć następujących kombinacji typów autoryzacji i typów usługi Azure Storage:

Typ autoryzacji Przechowywanie BLOB-ów ADLS Gen1 ADLS Gen2
SAS Obsługiwane Nieobsługiwane Obsługiwane
Tożsamość usługi Wspierane Wsparcie Obsługiwane
Tożsamość zarządzana Wspierane Obsługiwane Obsługiwane
Tożsamość użytkownika Obsługiwane Obsługiwane Obsługiwane

Scenariusze między dzierżawcami

W przypadkach, gdy usługa Azure Storage znajduje się w innej dzierżawie niż bezserwerowa pula SQL usługi Azure Synapse Analytics, autoryzacja za pośrednictwem jednostki usługi jest zalecaną metodą. Autoryzacja sygnatury dostępu współdzielonego jest również możliwa. Tożsamość usługi zarządzanej nie jest obsługiwana.

Typ autoryzacji Magazyn chroniony przez zaporę sieciową magazyn bez ochrony za pomocą zapory sieciowej
SAS Obsługiwane Obsługiwane
Podmiot usługi Nieobsługiwany Wspierane

Uwaga

Jeśli usługa Azure Storage jest chroniona przez zaporę usługi Azure Storage i znajduje się w innej dzierżawie, jednostka usługi nie będzie obsługiwana. Zamiast tego należy użyć sygnatury dostępu współdzielonego (SAS).

Przechowywanie chronione zaporą ogniową

Możesz skonfigurować konta magazynu, aby zezwolić na dostęp do określonej bezserwerowej puli SQL, tworząc regułę wystąpienia zasobu. W przypadku uzyskiwania dostępu do magazynu chronionego za pomocą zapory użyj tożsamości użytkownika lub tożsamości zarządzanej.

Uwaga

Funkcja zapory w usłudze Azure Storage jest dostępna w publicznej wersji zapoznawczej i jest dostępna we wszystkich regionach chmury publicznej.

Poniższa tabela zawiera dostępne typy autoryzacji usługi Azure Storage chronione przez zaporę dla różnych metod logowania do bezserwerowego punktu końcowego SQL usługi Azure Synapse Analytics:

Typ autoryzacji Użytkownik SQL Użytkownik firmy Microsoft Entra Jednostka usługi
Tożsamość użytkownika Nieobsługiwane Wspierane Obsługiwane
SAS Niewspierany Nieobsługiwany Nie jest obsługiwane
Nazwa usługi Niewspierane Nie obsługiwany Nieobsługiwane
Tożsamość zarządzana Obsługiwane Obsługiwane Obsługiwane

Aby uzyskać dostęp do magazynu chronionego za pomocą zapory za pośrednictwem tożsamości użytkownika, możesz użyć portalu Azure lub modułu Az.Storage PowerShell.

Konfiguracja zapory usługi Azure Storage za pośrednictwem witryny Azure Portal

  1. Wyszukaj swoje konto magazynu na Azure portal.
  2. W menu nawigacji głównej przejdź do pozycji Sieć w obszarze Ustawienia.
  3. W sekcji Instancje zasobów dodaj wyjątek dla obszaru roboczego Azure Synapse.
  4. Wybierz Microsoft.Synapse/workspaces jako typ zasobu.
  5. Wybierz nazwę obszaru roboczego jako nazwę wystąpienia.
  6. Wybierz pozycję Zapisz.

Konfiguracja zapory usługi Azure Storage za pośrednictwem programu PowerShell

Wykonaj następujące kroki, aby skonfigurować konto magazynu i dodać wyjątek dla obszaru roboczego usługi Azure Synapse.

  1. Otwórz program PowerShell lub zainstaluj program PowerShell.

  2. Zainstaluj najnowsze wersje modułu Az.Storage i modułu Az.Synapse, na przykład w następującym skrypcie:

    Install-Module -Name Az.Storage -RequiredVersion 3.4.0
    Install-Module -Name Az.Synapse -RequiredVersion 0.7.0
    

    Ważne

    Upewnij się, że używasz co najmniej wersji 3.4.0. Aby sprawdzić wersję modułu Az.Storage, uruchom następujące polecenie:

    Get-Module -ListAvailable -Name Az.Storage | Select Version
    
  3. Połącz się z dzierżawą platformy Azure:

    Connect-AzAccount
    
  4. Zdefiniuj zmienne w programie PowerShell:

    • Nazwa grupy zasobów — tę pozycję można znaleźć w portalu Azure w obszarze Przegląd konta magazynowego.
    • Nazwa konta: nazwa konta przechowywania chronionego przez reguły zapory.
    • Identyfikator dzierżawy — można go znaleźć w portalu Azure w obszarze Microsoft Entra ID w sekcji Właściwości w obszarze Właściwości dzierżawy.
    • Nazwa obszaru roboczego — nazwa obszaru roboczego usługi Azure Synapse.
        $resourceGroupName = "<resource group name>"
        $accountName = "<storage account name>"
        $tenantId = "<tenant id>"
        $workspaceName = "<Azure Synapse workspace name>"
    
        $workspace = Get-AzSynapseWorkspace -Name $workspaceName
        $resourceId = $workspace.Id
        $index = $resourceId.IndexOf("/resourceGroups/", 0)
        # Replace G with g - /resourceGroups/ to /resourcegroups/
        $resourceId = $resourceId.Substring(0,$index) + "/resourcegroups/" ` 
            + $resourceId.Substring($index + "/resourceGroups/".Length)
    
        $resourceId
    

    Ważne

    Wartość zwrócona $resourceid przez skrypt programu PowerShell powinna być zgodna z tym szablonem: /subscriptions/{subscription-id}/resourcegroups/{resource-group}/providers/Microsoft.Synapse/workspaces/{name-of-workspace} Ważne jest, aby zapisywać grupy zasobów w małych literach .

  5. Dodaj regułę sieciową konta usługi Azure Storage:

        $parameters = @{
            ResourceGroupName = $resourceGroupName
            Name = $accountName
            TenantId = $tenantId 
            ResourceId = $resourceId
        }
    
        Add-AzStorageAccountNetworkRule @parameters
    
  6. Sprawdź, czy reguła sieciowa konta magazynowego została zastosowana w zaporze ogniowej konta magazynowego. Poniższy skrypt programu PowerShell porównuje zmienną $resourceid z poprzednich kroków z wynikiem reguły sieciowej dla konta magazynowania.

        $parameters = @{
            ResourceGroupName = $resourceGroupName
            Name = $accountName
        }
    
        $rule = Get-AzStorageAccountNetworkRuleSet @parameters
        $rule.ResourceAccessRules | ForEach-Object { 
            if ($_.ResourceId -cmatch "\/subscriptions\/(\w\-*)+\/resourcegroups\/(.)+") { 
                Write-Host "Storage account network rule is successfully configured." -ForegroundColor Green
                $rule.ResourceAccessRules
            } else {
                Write-Host "Storage account network rule is not configured correctly. Remove this rule and follow the steps in detail." -ForegroundColor Red
                $rule.ResourceAccessRules
            }
        }
    

Poświadczenia

Aby wysłać zapytanie do pliku znajdującego się w usłudze Azure Storage, punkt końcowy bezserwerowej puli SQL wymaga poświadczenia zawierającego informacje dotyczące uwierzytelniania. Używane są dwa typy poświadczeń:

  • Poświadczenia na poziomie serwera są używane do wykonywania zapytań ad hoc przy użyciu OPENROWSET funkcji. Nazwa poświadczeń musi być zgodna z adresem URL magazynu.
  • Poświadczenie o zasięgu bazy danych jest używane dla tabel zewnętrznych. Odwołania do tabeli DATA SOURCE zewnętrznej z poświadczeniami, które powinny być używane do uzyskiwania dostępu do magazynu.

Udzielanie uprawnień do zarządzania poświadczeniami

Aby udzielić możliwości zarządzania poświadczeniami:

  • Aby zezwolić użytkownikowi na tworzenie lub usuwanie poświadczeń na poziomie serwera, administrator musi przyznać uprawnienia ALTER ANY CREDENTIAL do jego logowania w bazie danych master. Na przykład:

    GRANT ALTER ANY CREDENTIAL TO [login_name];
    
  • Aby umożliwić użytkownikowi tworzenie lub usuwanie poświadczenia o zakresie bazy danych, administrator musi przyznać użytkownikowi bazy danych uprawnienia CONTROL w bazie danych użytkownika. Na przykład:

    GRANT CONTROL ON DATABASE::[database_name] TO [user_name];
    

Udzielanie uprawnień do używania poświadczeń

Użytkownicy bazy danych, którzy uzyskują dostęp do magazynu zewnętrznego, muszą mieć uprawnienia do używania poświadczeń. Aby użyć poświadczenia, użytkownik musi mieć REFERENCES uprawnienie do określonego poświadczenia.

Aby udzielić REFERENCES uprawnień do poziomu serwera dla danego loginu, użyj następującego zapytania T-SQL w bazie danych master:

GRANT REFERENCES ON CREDENTIAL::[server-level_credential] TO [login_name];

Aby udzielić REFERENCES uprawnienia do poświadczenia ograniczonego do bazy danych dla użytkownika, użyj następującego zapytania T-SQL w bazie danych użytkownika.

GRANT REFERENCES ON DATABASE SCOPED CREDENTIAL::[database-scoped_credential] TO [user_name];

Poświadczenia na poziomie serwera

Poświadczenia na poziomie serwera są używane, gdy identyfikator logowania SQL wywołuje OPENROWSET funkcję bez elementu DATA_SOURCE do odczytu plików na koncie magazynu.

Nazwa poświadczeń na poziomie serwera musi być zgodna z podstawowym adresem URL usługi Azure Storage, po którym opcjonalnie następuje nazwa kontenera. Poświadczenie jest dodawane przez uruchomienie polecenia CREATE CREDENTIAL. Musisz podać CREDENTIAL NAME argument .

Uwaga

Argument FOR CRYPTOGRAPHIC PROVIDER nie jest obsługiwany.

Nazwa POŚWIADCZENIA na poziomie serwera musi być zgodna z następującym formatem: <prefix>://<storage_account_path>[/<container_name>]. Ścieżki konta magazynu opisano w poniższej tabeli:

Zewnętrzne źródło danych Prefiks Ścieżka konta magazynowego
Azure Blob Storage (magazynowanie danych) https <storage_account>.blob.core.windows.net
Usługa Azure Data Lake Storage 1. generacji https <storage_account>.azuredatalakestore.net/webhdfs/v1
Usługa Azure Data Lake Storage 2. generacji https <storage_account>.dfs.core.windows.net

Poświadczenia na poziomie serwera mogą następnie uzyskiwać dostęp do usługi Azure Storage przy użyciu następujących typów uwierzytelniania:

Użytkownicy Microsoft Entra mogą uzyskiwać dostęp do dowolnego pliku w usłudze Azure Storage, jeśli są członkami ról Właściciel danych Blob Storage, Współautor danych Blob Storage lub Czytelnik danych Blob Storage. Użytkownicy firmy Microsoft Entra nie potrzebują poświadczeń, aby uzyskać dostęp do magazynu.

Użytkownicy uwierzytelniani przy użyciu SQL nie mogą korzystać z uwierzytelniania Microsoft Entra, aby uzyskać dostęp do przestrzeni magazynowej. Mogą oni uzyskiwać dostęp do magazynu za pośrednictwem poświadczeń bazy danych przy użyciu tożsamości zarządzanej, klucza sygnatury dostępu współdzielonego, konta usługi lub publicznego dostępu do magazynu.

Poświadczenie ograniczone do bazy danych

Poświadczenia o zakresie bazy danych są używane, gdy każdy główny wywołuje funkcję OPENROWSET z DATA_SOURCE lub wybiera dane z tabeli zewnętrznej, które nie uzyskują dostępu do plików publicznych. Poświadczenie ograniczone do zakresu bazy danych nie musi odpowiadać nazwie konta magazynu; jest ono używane w źródle danych, które definiuje lokalizację magazynu.

Poświadczenia o zasięgu bazy danych umożliwiają dostęp do usługi Azure Storage przy użyciu następujących typów uwierzytelniania:

Użytkownicy firmy Microsoft Entra mogą uzyskać dostęp do dowolnego pliku w usłudze Azure Storage, jeśli są członkami ról właściciela danych obiektu blob usługi Storage, współautora danych obiektu blob usługi Storage lub czytelnika danych obiektu blob usługi Storage. Użytkownicy firmy Microsoft Entra nie potrzebują poświadczeń, aby uzyskać dostęp do magazynu.

CREATE EXTERNAL DATA SOURCE mysample
WITH (    LOCATION   = 'https://<storage_account>.dfs.core.windows.net/<container>/<path>'
)

Użytkownicy uwierzytelniani przy użyciu SQL nie mogą korzystać z uwierzytelniania Microsoft Entra, aby uzyskać dostęp do magazynu. Mogą oni uzyskiwać dostęp do magazynu za pomocą poświadczeń bazy danych, korzystając z tożsamości zarządzanej, klucza SAS, jednostki usługi lub gdy magazyn jest publicznie dostępny.

Poświadczenia bazy danych są używane w zewnętrznych źródłach danych w celu określenia, która metoda uwierzytelniania będzie używana do uzyskiwania dostępu do tego repozytorium danych.

CREATE EXTERNAL DATA SOURCE mysample
WITH (    LOCATION   = 'https://<storage_account>.dfs.core.windows.net/<container>/<path>',
          CREDENTIAL = <name of database scoped credential> 
)

Przykłady

Uzyskiwanie dostępu do publicznie dostępnego źródła danych

Użyj poniższego skryptu, aby utworzyć tabelę, która uzyskuje dostęp do publicznie dostępnego źródła danych.

CREATE EXTERNAL FILE FORMAT [SynapseParquetFormat]
       WITH ( FORMAT_TYPE = PARQUET)
GO
CREATE EXTERNAL DATA SOURCE publicData
WITH ( LOCATION = 'https://<storage_account>.dfs.core.windows.net/<public_container>/<path>' )
GO

CREATE EXTERNAL TABLE dbo.userPublicData ( [id] int, [first_name] varchar(8000), [last_name] varchar(8000) )
WITH ( LOCATION = 'parquet/user-data/*.parquet',
       DATA_SOURCE = [publicData],
       FILE_FORMAT = [SynapseParquetFormat] )

Użytkownik bazy danych może odczytywać zawartość plików ze źródła danych przy użyciu tabeli zewnętrznej lub funkcji OPENROWSET , która odwołuje się do źródła danych:

SELECT TOP 10 * FROM dbo.userPublicData;
GO
SELECT TOP 10 * FROM OPENROWSET(BULK 'parquet/user-data/*.parquet',
                                DATA_SOURCE = 'mysample',
                                FORMAT='PARQUET') as rows;
GO

Uzyskiwanie dostępu do źródła danych przy użyciu poświadczeń

Zmodyfikuj poniższy skrypt, aby utworzyć tabelę zewnętrzną, która uzyskuje dostęp do usługi Azure Storage przy użyciu tokenu SAS, tożsamości microsoft Entra użytkownika lub tożsamości zarządzanej obszaru roboczego.

-- Create master key in databases with some password (one-off per database)
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>'
GO

-- Create databases scoped credential that use Managed Identity, SAS token or service principal. User needs to create only database-scoped credentials that should be used to access data source:

CREATE DATABASE SCOPED CREDENTIAL WorkspaceIdentity
WITH IDENTITY = 'Managed Identity'
GO
CREATE DATABASE SCOPED CREDENTIAL SasCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'sv=2019-10-1********ZVsTOL0ltEGhf54N8KhDCRfLRI%3D'
GO
CREATE DATABASE SCOPED CREDENTIAL SPNCredential WITH
IDENTITY = '**44e*****8f6-ag44-1890-34u4-22r23r771098@https://login.microsoftonline.com/**do99dd-87f3-33da-33gf-3d3rh133ee33/oauth2/token' 
, SECRET = '.7OaaU_454azar9WWzLL.Ea9ePPZWzQee~'
GO
-- Create data source that one of the credentials above, external file format, and external tables that reference this data source and file format:

CREATE EXTERNAL FILE FORMAT [SynapseParquetFormat] WITH ( FORMAT_TYPE = PARQUET)
GO

CREATE EXTERNAL DATA SOURCE mysample
WITH ( LOCATION = 'https://<storage_account>.dfs.core.windows.net/<container>/<path>'
-- Uncomment one of these options depending on authentication method that you want to use to access data source:
--,CREDENTIAL = WorkspaceIdentity 
--,CREDENTIAL = SasCredential 
--,CREDENTIAL = SPNCredential
)

CREATE EXTERNAL TABLE dbo.userData ( [id] int, [first_name] varchar(8000), [last_name] varchar(8000) )
WITH ( LOCATION = 'parquet/user-data/*.parquet',
       DATA_SOURCE = [mysample],
       FILE_FORMAT = [SynapseParquetFormat] );

Użytkownik bazy danych może odczytywać zawartość plików ze źródła danych przy użyciu tabeli zewnętrznej lub funkcji OPENROWSET , która odwołuje się do źródła danych:

SELECT TOP 10 * FROM dbo.userdata;
GO
SELECT TOP 10 * FROM OPENROWSET(BULK 'parquet/user-data/*.parquet', DATA_SOURCE = 'mysample', FORMAT='PARQUET') as rows;
GO

Te artykuły ułatwiają poznanie sposobu wykonywania zapytań dotyczących różnych typów folderów, typów plików oraz tworzenia i używania widoków: