Delen via


pg_azure_storage-extensie

VAN TOEPASSING OP: Azure Cosmos DB for PostgreSQL (mogelijk gemaakt door de Citus-database-extensie naar PostgreSQL)

Met de pg_azure_storage-extensie kunt u gegevens in meerdere bestandsindelingen rechtstreeks vanuit Azure Blob Storage laden naar uw Azure Cosmos DB for PostgreSQL-cluster. Als u de extensie inschakelt, worden ook nieuwe mogelijkheden van de opdracht COPY ontgrendeld. Voor containers met toegangsniveau Privé of Blob moet persoonlijke toegangssleutel worden toegevoegd.

U kunt de extensie maken door het volgende uit te voeren:

SELECT create_extension('azure_storage');

azure_storage.account_add

Met de functie kunt u toegang tot een opslagaccount toevoegen.

azure_storage.account_add
        (account_name_p text
        ,account_key_p text);

Argumenten

account_name_p

Een Azure Blob Storage-account (ABS) bevat al uw ABS-objecten: blobs, bestanden, wachtrijen en tabellen. Het opslagaccount biedt een unieke naamruimte voor uw ABS die overal ter wereld toegankelijk is via HTTPS.

account_key_p

Uw toegangssleutels voor Azure Blob Storage (ABS) zijn vergelijkbaar met een hoofdwachtwoord voor uw opslagaccount. Wees altijd voorzichtig met het beveiligen van uw toegangssleutels. Gebruik Azure Key Vault om uw sleutels veilig te beheren en te roteren. De accountsleutel wordt opgeslagen in een tabel die toegankelijk is voor de postgres-superuser, azure_storage_admin en alle rollen waaraan deze beheerdersmachtigingen zijn verleend. Gebruik de functie account_list om te zien welke opslagaccounts er bestaan.

azure_storage.account_remove

Met de functie kan accounttoegang tot het opslagaccount worden ingeroepen.

azure_storage.account_remove
        (account_name_p text);

Argumenten

account_name_p

Het Azure Blob Storage-account (ABS) bevat al uw ABS-objecten: blobs, bestanden, wachtrijen en tabellen. Het opslagaccount biedt een unieke naamruimte voor uw ABS die overal ter wereld toegankelijk is via HTTPS.

azure_storage.account_user_add

Met de functie kunt u toegang voor een rol toevoegen aan een opslagaccount.

azure_storage.account_user_add
        ( account_name_p text
        , user_p regrole);

Argumenten

account_name_p

Een Azure Blob Storage-account (ABS) bevat al uw ABS-objecten: blobs, bestanden, wachtrijen en tabellen. Het opslagaccount biedt een unieke naamruimte voor uw ABS die overal ter wereld toegankelijk is via HTTPS.

user_p

Rol die is gemaakt door de gebruiker die zichtbaar is in het cluster.

Notitie

account_user_add,account_add,account_remove,account_user_remove functies vereisen het instellen van machtigingen voor elke afzonderlijke knooppunten in het cluster.

azure_storage.account_user_remove

Met de functie kunt u de toegang voor een rol naar een opslagaccount verwijderen.

azure_storage.account_user_remove
        (account_name_p text
        ,user_p regrole);

Argumenten

account_name_p

Een Azure Blob Storage-account (ABS) bevat al uw ABS-objecten: blobs, bestanden, wachtrijen en tabellen. Het opslagaccount biedt een unieke naamruimte voor uw ABS die overal ter wereld toegankelijk is via HTTPS.

user_p

Rol die is gemaakt door de gebruiker die zichtbaar is in het cluster.

azure_storage.account_list

De functie geeft een lijst weer van het account en de rol die toegang heeft tot Azure Blob Storage.

azure_storage.account_list
        (OUT account_name text
        ,OUT allowed_users regrole[]
        )
Returns TABLE;

Argumenten

account_name

Het Azure Blob Storage-account (ABS) bevat al uw ABS-objecten: blobs, bestanden, wachtrijen en tabellen. Het opslagaccount biedt een unieke naamruimte voor uw ABS die overal ter wereld toegankelijk is via HTTPS.

allowed_users

Geeft een lijst weer van de gebruikers die toegang hebben tot de Azure Blob-opslag.

Retourtype

TABEL

azure_storage.blob_list

De functie bevat de beschikbare blobbestanden in een gebruikerscontainer met hun eigenschappen.

azure_storage.blob_list
        (account_name text
        ,container_name text
        ,prefix text DEFAULT ''::text
        ,OUT path text
        ,OUT bytes bigint
        ,OUT last_modified timestamp with time zone
        ,OUT etag text
        ,OUT content_type text
        ,OUT content_encoding text
        ,OUT content_hash text
        )
Returns SETOF record;

Argumenten

account_name

Het storage account name biedt een unieke naamruimte voor uw Azure-opslaggegevens die overal ter wereld toegankelijk zijn via HTTPS.

container_name

Een container kan een of meer blobs bevatten, net zoals een map een of meer bestanden kan bevatten in een bestandssysteem. Een opslagaccount kan een onbeperkt aantal containers bevatten en een container kan een onbeperkt aantal blobs bevatten. Een containernaam moet een geldige DNS-naam zijn, omdat deze deel uitmaakt van de unieke URI die wordt gebruikt om de container of de bijbehorende blobs te adresseren. Volg deze regels bij het benoemen van een container:

  • Containernamen kunnen tussen 3 en 63 tekens lang zijn.
  • Containernamen moeten beginnen met een letter of cijfer en mogen alleen kleine letters, cijfers en het streepje (-) bevatten.
  • Twee of meer opeenvolgende streepjes zijn niet toegestaan in containernamen.

De URI voor een container is vergelijkbaar met: https://myaccount.blob.core.windows.net/mycontainer

voorvoegsel

Retourneert een bestand uit de blobcontainer met overeenkomende initialen van tekenreeksen.

path

Volledig gekwalificeerde pad van Azure Blob-map.

bytes

De grootte van het bestandsobject in bytes.

last_modified

Wanneer is de bestandsinhoud voor het laatst gewijzigd.

etag

Een ETag-eigenschap wordt gebruikt voor optimistische gelijktijdigheid tijdens updates. Het is geen tijdstempel omdat er een andere eigenschap is met de naam Timestamp waarin de laatste keer dat een record is bijgewerkt, wordt opgeslagen. Als u bijvoorbeeld een entiteit laadt en deze wilt bijwerken, moet de ETag overeenkomen met wat momenteel is opgeslagen. Het instellen van de juiste ETag is belangrijk omdat als u meerdere gebruikers hetzelfde item bewerkt, u niet wilt dat ze elkaars wijzigingen overschrijven.

content_type

Het Blob-object vertegenwoordigt een blob, een bestandachtig object met onveranderbare, onbewerkte gegevens. Ze kunnen worden gelezen als tekst of binaire gegevens, of worden geconverteerd naar een ReadableStream, zodat de methoden kunnen worden gebruikt voor het verwerken van de gegevens. Blobs kunnen gegevens vertegenwoordigen die niet noodzakelijkerwijs in een systeemeigen JavaScript-indeling zijn.

content_encoding

Met Azure Storage kunt u de eigenschap Content-Encoding definiëren op een blob. Voor gecomprimeerde inhoud kunt u de eigenschap instellen op GZIP. Wanneer de browser toegang heeft tot de inhoud, wordt de inhoud automatisch gedecomprimeert.

content_hash

Deze hash wordt gebruikt om de integriteit van de blob tijdens het transport te controleren. Wanneer deze header is opgegeven, controleert de opslagservice de hash die is aangekomen met de hash die is verzonden. Als de twee hashes niet overeenkomen, mislukt de bewerking met foutcode 400 (Ongeldige aanvraag).

Retourtype

SETOF-record

Notitie

Met machtigingen kunt u nu containers weergeven die zijn ingesteld op toegangsniveaus voor privé- en blobtoegang voor die opslag, maar alleen als de citus user, waaraan de azure_storage_admin rol is verleend. Als u een nieuwe gebruiker met de naam supportmaakt, is het niet standaard toegestaan om toegang te krijgen tot de inhoud van de container.

azure_storage.blob_get

Met de functie kan de inhoud van bestand \ bestanden vanuit de container worden geladen, met toegevoegde ondersteuning voor het filteren of bewerken van gegevens, voorafgaand aan het importeren.

azure_storage.blob_get
        (account_name text
        ,container_name text
        ,path text
        ,decoder text DEFAULT 'auto'::text
        ,compression text DEFAULT 'auto'::text
        ,options jsonb DEFAULT NULL::jsonb
        )
RETURNS SETOF record;

Er is een overbelaste versie van de functie, die rec-parameter bevat waarmee u de uitvoerindelingrecord gemakkelijk kunt definiëren.

azure_storage.blob_get
        (account_name text
        ,container_name text
        ,path text
        ,rec anyelement
        ,decoder text DEFAULT 'auto'::text
        ,compression text DEFAULT 'auto'::text
        ,options jsonb DEFAULT NULL::jsonb
        )
RETURNS SETOF anyelement;

Argumenten

Account

Het opslagaccount biedt een unieke naamruimte voor uw Azure Storage-gegevens die overal ter wereld toegankelijk zijn via HTTPS.

container

Een container kan een of meer blobs bevatten, net zoals een map een of meer bestanden kan bevatten in een bestandssysteem. Een opslagaccount kan een onbeperkt aantal containers bevatten en een container kan een onbeperkt aantal blobs bevatten. Een containernaam moet een geldige DNS-naam zijn, omdat deze deel uitmaakt van de unieke URI die wordt gebruikt om de container of de bijbehorende blobs te adresseren.

path

De blobnaam die aanwezig is in de container.

Rec

Definieer de recorduitvoerstructuur.

Decoder

De decoder voor blob-indeling opgeven kan worden ingesteld op automatisch (standaard) of een van de volgende waarden

decoderbeschrijving

Notatie Beschrijving
CSV Door komma's gescheiden waardenindeling die wordt gebruikt door PostgreSQL COPY
tsv Door tabs gescheiden waarden, de standaard PostgreSQL COPY-indeling
binair Binaire PostgreSQL COPY-indeling
sms verzenden Een bestand met één tekstwaarde (bijvoorbeeld grote JSON of XML)

compressie

Hiermee definieert u de compressie-indeling. Beschikbare opties zijn auto, gzip & none. Het gebruik van de auto optie (standaard), raadt de compressie op basis van de bestandsextensie (.gz == gzip). De optie none dwingt de extensie te negeren en probeert de extensie niet te decoderen. Gzip dwingt het gebruik van de gzip-decoder af (voor wanneer u een gegzipped-bestand met een niet-standaardextensie hebt). Momenteel bieden we geen ondersteuning voor andere compressie-indelingen voor de extensie.

Opties

Voor het verwerken van aangepaste headers, aangepaste scheidingstekens, escapetekens, enzovoort, options werkt op dezelfde manier als COPY de opdracht in PostgreSQL, wordt de parameter gebruikt voor blob_get functie.

Retourtype

SETOF-record/anyelement

Notitie

Er zijn vier hulpprogrammafuncties die worden aangeroepen als een parameter binnen blob_get die helpen bij het bouwen van waarden. Elke functie van het hulpprogramma wordt aangewezen voor de decoder die overeenkomt met de naam.

azure_storage.options_csv_get

De functie fungeert als een hulpprogrammafunctie die wordt aangeroepen als een parameter binnen blob_get, wat handig is voor het decoderen van de CSV-inhoud.

azure_storage.options_csv_get
        (delimiter text DEFAULT NULL::text
        ,null_string text DEFAULT NULL::text
        ,header boolean DEFAULT NULL::boolean
        ,quote text DEFAULT NULL::text
        ,escape text DEFAULT NULL::text
        ,force_not_null text[] DEFAULT NULL::text[]
        ,force_null text[] DEFAULT NULL::text[]
        ,content_encoding text DEFAULT NULL::text
        )
Returns jsonb;

Argumenten

scheidingsteken

Hiermee geeft u het teken op dat kolommen in elke rij (regel) van het bestand scheidt. De standaardwaarde is een tabteken in tekstindeling, een komma in CSV-indeling. Het moet één byteteken zijn.

null_string

Hiermee geeft u de tekenreeks die een null-waarde vertegenwoordigt. De standaardwaarde is \N (backslash-N) in tekstindeling en een niet-aanhalingstekenloze lege tekenreeks in CSV-indeling. Mogelijk geeft u de voorkeur aan een lege tekenreeks, zelfs in tekstindeling voor gevallen waarin u null-waarden niet wilt onderscheiden van lege tekenreeksen.

Hiermee geeft u op dat het bestand een koptekstregel bevat met de namen van elke kolom in het bestand. In de uitvoer bevat de eerste regel de kolomnamen uit de tabel.

citaat

Hiermee geeft u het aanhalingsteken op dat moet worden gebruikt wanneer een gegevenswaarde wordt aanhalingstekens. De standaardwaarde is dubbele aanhalingstekens. Het moet één byteteken zijn.

escape

Hiermee geeft u het teken op dat moet worden weergegeven vóór een gegevensteken dat overeenkomt met de prijsopgavewaarde. De standaardwaarde is hetzelfde als de prijsopgavewaarde (zodat het aanhalingsteken wordt verdubbeld als het in de gegevens wordt weergegeven). Het moet één byteteken zijn.

force_not_null

Komt niet overeen met de waarden van de opgegeven kolommen ten opzichte van de null-tekenreeks. In het standaardscenario waarin de null-tekenreeks leeg is, betekent dit dat lege waarden worden gelezen als tekenreeksen met de lengte nul in plaats van nullen, zelfs wanneer ze niet worden geciteerd.

force_null

Koppel de waarden van de opgegeven kolommen aan de null-tekenreeks, zelfs als deze is geciteerd en als er een overeenkomst wordt gevonden, stelt u de waarde in op NULL. In het standaardscenario waarin de null-tekenreeks leeg is, wordt een lege tekenreeks tussen aanhalingstekens omgezet in NULL.

content_encoding

Hiermee geeft u op dat het bestand is gecodeerd in de encoding_name. Als de optie wordt weggelaten, wordt de huidige clientcodering gebruikt.

Retourtype

jsonb

azure_storage.options_copy

De functie fungeert als een hulpprogrammafunctie die wordt aangeroepen als een parameter binnen blob_get.

azure_storage.options_copy
        (delimiter text DEFAULT NULL::text
        ,null_string text DEFAULT NULL::text
        ,header boolean DEFAULT NULL::boolean
        ,quote text DEFAULT NULL::text
        ,escape text DEFAULT NULL::text
        ,force_quote text[] DEFAULT NULL::text[]
        ,force_not_null text[] DEFAULT NULL::text[]
        ,force_null text[] DEFAULT NULL::text[]
        ,content_encoding text DEFAULT NULL::text
        )
Returns jsonb;

Argumenten

scheidingsteken

Hiermee geeft u het teken op dat kolommen in elke rij (regel) van het bestand scheidt. De standaardwaarde is een tabteken in tekstindeling, een komma in CSV-indeling. Het moet één byteteken zijn.

null_string

Hiermee geeft u de tekenreeks die een null-waarde vertegenwoordigt. De standaardwaarde is \N (backslash-N) in tekstindeling en een niet-aanhalingstekenloze lege tekenreeks in CSV-indeling. Mogelijk geeft u de voorkeur aan een lege tekenreeks, zelfs in tekstindeling voor gevallen waarin u null-waarden niet wilt onderscheiden van lege tekenreeksen.

koptekst

Hiermee geeft u op dat het bestand een koptekstregel bevat met de namen van elke kolom in het bestand. In de uitvoer bevat de eerste regel de kolomnamen uit de tabel.

citaat

Hiermee geeft u het aanhalingsteken op dat moet worden gebruikt wanneer een gegevenswaarde wordt aanhalingstekens. De standaardwaarde is dubbele aanhalingstekens. Het moet één byteteken zijn.

escape

Hiermee geeft u het teken op dat moet worden weergegeven vóór een gegevensteken dat overeenkomt met de prijsopgavewaarde. De standaardwaarde is hetzelfde als de prijsopgavewaarde (zodat het aanhalingsteken wordt verdubbeld als het in de gegevens wordt weergegeven). Het moet één byteteken zijn.

force_quote

Dwingt af dat het quoteren moet worden gebruikt voor alle niet-NULL-waarden in elke opgegeven kolom. Null-uitvoer wordt nooit geciteerd. Als * is opgegeven, worden niet-NULL-waarden in alle kolommen vermeld.

force_not_null

Komt niet overeen met de waarden van de opgegeven kolommen ten opzichte van de null-tekenreeks. In het standaardscenario waarin de null-tekenreeks leeg is, betekent dit dat lege waarden worden gelezen als tekenreeksen met de lengte nul in plaats van nullen, zelfs wanneer ze niet worden geciteerd.

force_null

Koppel de waarden van de opgegeven kolommen aan de null-tekenreeks, zelfs als deze is geciteerd en als er een overeenkomst wordt gevonden, stelt u de waarde in op NULL. In het standaardscenario waarin de null-tekenreeks leeg is, wordt een lege tekenreeks tussen aanhalingstekens omgezet in NULL.

content_encoding

Hiermee geeft u op dat het bestand is gecodeerd in de encoding_name. Als de optie wordt weggelaten, wordt de huidige clientcodering gebruikt.

Retourtype

jsonb

azure_storage.options_tsv

De functie fungeert als een hulpprogrammafunctie die wordt aangeroepen als een parameter binnen blob_get. Het is handig voor het decoderen van de tsv-inhoud.

azure_storage.options_tsv
        (delimiter text DEFAULT NULL::text
        ,null_string text DEFAULT NULL::text
        ,content_encoding text DEFAULT NULL::text
        )
Returns jsonb;

Argumenten

scheidingsteken

Hiermee geeft u het teken op dat kolommen in elke rij (regel) van het bestand scheidt. De standaardwaarde is een tabteken in tekstindeling, een komma in CSV-indeling. Het moet één byteteken zijn.

null_string

Hiermee geeft u de tekenreeks die een null-waarde vertegenwoordigt. De standaardwaarde is \N (backslash-N) in tekstindeling en een niet-aanhalingstekenloze lege tekenreeks in CSV-indeling. Mogelijk geeft u de voorkeur aan een lege tekenreeks, zelfs in tekstindeling voor gevallen waarin u null-waarden niet wilt onderscheiden van lege tekenreeksen.

content_encoding

Hiermee geeft u op dat het bestand is gecodeerd in de encoding_name. Als de optie wordt weggelaten, wordt de huidige clientcodering gebruikt.

Retourtype

jsonb

azure_storage.options_binary

De functie fungeert als een hulpprogrammafunctie die wordt aangeroepen als een parameter binnen blob_get. Het is handig voor het decoderen van de binaire inhoud.

azure_storage.options_binary
        (content_encoding text DEFAULT NULL::text)
Returns jsonb;

Argumenten

content_encoding

Hiermee geeft u op dat het bestand is gecodeerd in de encoding_name. Als deze optie wordt weggelaten, wordt de huidige clientcodering gebruikt.

Retourtype

jsonb

Notitie

Met machtigingen kunt u nu containers weergeven die zijn ingesteld op toegangsniveaus voor privé- en blobtoegang voor die opslag, maar alleen als de citus user, waaraan de azure_storage_admin rol is verleend. Als u een nieuwe gebruiker met de naam Support maakt, is het niet standaard toegestaan om toegang te krijgen tot de inhoud van de container.

Voorbeelden

De voorbeelden die worden gebruikt, maken gebruik van een voorbeeld van een Azure-opslagaccount (pgquickstart) met aangepaste bestanden die zijn geüpload om toe te voegen aan de dekking van verschillende gebruiksvoorbeelden. We kunnen beginnen met het maken van een tabel die wordt gebruikt in de set met voorbeelden.

CREATE TABLE IF NOT EXISTS public.events
        (
         event_id bigint
        ,event_type text
        ,event_public boolean
        ,repo_id bigint
        ,payload jsonb
        ,repo jsonb
        ,user_id bigint
        ,org jsonb
        ,created_at timestamp without time zone
        );

Toegangssleutel van opslagaccount toevoegen (verplicht voor toegangsniveau = privé)

In het voorbeeld ziet u hoe u toegangssleutel voor het opslagaccount toevoegt om toegang te krijgen tot query's vanuit een sessie in het Azure Cosmos DB voor Postgres-cluster.

SELECT azure_storage.account_add('pgquickstart', 'SECRET_ACCESS_KEY');

Tip

Open toegangssleutels in uw opslagaccount. Kopieer de naam van het opslagaccount en kopieer de sleutel uit de sectie Sleutel1 (u moet eerst Weergeven naast de sleutel selecteren).

Schermopname van de sectie Beveiligings- en netwerktoegangssleutels > van een Azure Blob Storage-pagina in Azure Portal.

Toegangssleutel van opslagaccount verwijderen

In het voorbeeld ziet u hoe u de toegangssleutel voor een opslagaccount verwijdert. Deze actie resulteert in het verwijderen van toegang tot bestanden die worden gehost in een privé-bucket in de container.

SELECT azure_storage.account_remove('pgquickstart');

Toegang voor een rol toevoegen aan Azure Blob Storage

SELECT * FROM azure_storage.account_user_add('pgquickstart', 'support');

Alle rollen weergeven met toegang in Azure Blob Storage

SELECT * FROM azure_storage.account_list();

De rollen verwijderen met toegang in Azure Blob Storage

SELECT * FROM azure_storage.account_user_remove('pgquickstart', 'support');

De objecten in een public container weergeven

SELECT * FROM azure_storage.blob_list('pgquickstart','publiccontainer');

De objecten in een private container weergeven

SELECT * FROM azure_storage.blob_list('pgquickstart','privatecontainer');

Notitie

Het toevoegen van een toegangssleutel is verplicht.

De objecten weergeven met specifieke tekenreeks initialen binnen een openbare container

SELECT * FROM azure_storage.blob_list('pgquickstart','publiccontainer','e');

Alternatief

SELECT * FROM azure_storage.blob_list('pgquickstart','publiccontainer') WHERE path LIKE 'e%';

Inhoud lezen van een object in een container

Met de blob_get functie wordt een bestand opgehaald uit blobopslag. Om blob_get te laten weten hoe u de gegevens kunt parseren, kunt u een waarde (NULL::table_name) doorgeven die dezelfde indeling heeft als het bestand.

SELECT * FROM azure_storage.blob_get
        ('pgquickstart'
        ,'publiccontainer'
        ,'events.csv.gz'
        , NULL::events)
LIMIT 5;

U kunt ook expliciet de kolommen in de FROM component definiëren.

SELECT * FROM azure_storage.blob_get('pgquickstart','publiccontainer','events.csv')
AS res (
         event_id BIGINT
        ,event_type TEXT
        ,event_public BOOLEAN
        ,repo_id BIGINT
        ,payload JSONB
        ,repo JSONB
        ,user_id BIGINT
        ,org JSONB
        ,created_at TIMESTAMP WITHOUT TIME ZONE)
LIMIT 5;

Decoderoptie gebruiken

In het voorbeeld ziet u het gebruik van decoder de optie. Normaal gesproken wordt de indeling afgeleid van de extensie van het bestand, maar wanneer de bestandsinhoud geen overeenkomende extensie heeft, kunt u het argument decoder doorgeven.

SELECT * FROM azure_storage.blob_get
        ('pgquickstart'
        ,'publiccontainer'
        ,'events'
        , NULL::events
        , decoder := 'csv')
LIMIT 5;

Compressie gebruiken met decoderoptie

In het voorbeeld ziet u hoe u het gebruik van de gzip-compressie kunt afdwingen op een gecomprimeerd gzip-bestand zonder een standaard-.gz-extensie.

SELECT * FROM azure_storage.blob_get
        ('pgquickstart'
        ,'publiccontainer'
        ,'events-compressed'
        , NULL::events
        , decoder := 'csv'
        , compression := 'gzip')
LIMIT 5;

Gefilterde inhoud importeren en wijzigen voordat u laadt vanuit csv-indelingsobject

In het voorbeeld ziet u de mogelijkheid om de inhoud die wordt geïmporteerd uit het object in de container te filteren en te wijzigen voordat deze in een SQL-tabel wordt geladen.

SELECT concat('P-',event_id::text) FROM azure_storage.blob_get
        ('pgquickstart'
        ,'publiccontainer'
        ,'events.csv'
        , NULL::events)
WHERE event_type='PushEvent'
LIMIT 5;

Query's uitvoeren op inhoud uit bestand met kopteksten, aangepaste scheidingstekens, escapetekens

U kunt aangepaste scheidingstekens en escapetekens gebruiken door het resultaat van azure_storage.options_copy het options argument door te geven.

SELECT * FROM azure_storage.blob_get
        ('pgquickstart'
        ,'publiccontainer'
        ,'events_pipe.csv'
        ,NULL::events
        ,options := azure_storage.options_csv_get(delimiter := '|' , header := 'true')
        );

Aggregatiequery voor inhoud van een object in de container

Op deze manier kunt u query's uitvoeren op gegevens zonder deze te importeren.

SELECT event_type,COUNT(1) FROM azure_storage.blob_get
        ('pgquickstart'
        ,'publiccontainer'
        ,'events.csv'
        , NULL::events)
GROUP BY event_type
ORDER BY 2 DESC
LIMIT 5;

Volgende stappen