SQL Array -variabel

SQL Array -variabel

Denne artikkelen vil lære hvordan du oppretter og bruker matriser i standard SQL. Det er bra å merke seg at selv om matriser er en del av standard SQL, støtter ikke databaser som MySQL.

Hva er en matrise?

En matrise refererer til en samling av en bestilt liste over elementer. Arrays er veldig nyttige og kraftige. Å lære å jobbe med en matrise kan bidra til å forbedre ytelsen og gi komplekse datamanipulasjonsteknikker.

I databasemotorer som BigQuery og PostgreSQL, er en matrise en innebygd type som kan brukes hvor som helst i databasen.

I motsetning til PostgreSQL, forhindrer imidlertid BigQuery deg i å lage flerdimensjonale matriser.

SQL Lag matrise

Den enkleste måten å lage en matrise er å bruke det bokstavelige formatet. Et eksempel er som vist:

PLUKKE UT
[1,
2,
3,
4,
5] som my_array;

Koden over skal opprette en matrise som heter My_Array med elementene i de firkantede parentesene.

Et eksempelutgang er som vist:

my_array
"[1,2,3,4,5]"

Den andre metoden du kan bruke til å lage en matrise er generate_array -funksjonen. Denne funksjonen er bare tilgjengelig i BigQuery.

Koden nedenfor viser hvordan du bruker generate_array -funksjonen for å generere en matrise.

PLUKKE UT
Generere_array (1, 5) som my_array;

Koden over genererer en rekke elementer fra 1 til 5. Den resulterende utgangen er som vist:

my_array
"[1,2,3,4,5]"

Generate_array -funksjonen følger syntaks som vist nedenfor:

Generere_array (start_expression, end_expression [, step_expression])

Du kan bruke Step_Expression for å sette trinnstørrelsen for de genererte elementene.

Andre lignende funksjoner inkluderer:

  1. Generere_date_array - generere en rekke datoer
  2. Generere_timestamp_array - genererer en rekke tidsstempler.

Du kan sjekke dokumentasjonen på matrisefunksjoner for å lære mer.

Få tilgang til matriseelementer

BigQuery lar oss bruke enten forskyvningsverdien eller den ordinære verdien for å få tilgang til elementer i en matrise.

Offset er en 0-basert verdi, mens ordinalen er 1-basert.

Tenk på et eksempel på spørringen nedenfor:

PLUKKE UT
my_array [
Offset
(0)] som offset_0,
my_array [ordinal (1)] som ordinal_0
FRA (
PLUKKE UT
Generere_array (1, 5) som my_array);

I spørringen bruker vi generate_array -funksjonen for å generere en matrise med verdier fra 1 til 5.

Vi bruker deretter forskyvnings- og ordinære funksjoner for å hente det første elementet i matrisen.

Koden over skal returnere:

offset_0 ordinal_0
1 1

Du kan velge hvilken metode for matriseadgang du ønsker å bruke. Velg for eksempel forskyvning hvis du foretrekker en 0-basert indeks; Ellers, velg Ordinal.

Finne array -lengde

For å få lengden på en matrise, kan du bruke array_length -funksjonen som vist:

PLUKKE UT
Array_length ([1,2,3,4,5]);

Dette skal returnere lengden på matrisen som:

f0_
5

Arrayens lengde refererer til antall elementer i matrisen.

Konverter matrisen til rader

For å konvertere en matrise til et sett med rader, bruk Unnest -funksjonen som vist nedenfor:

PLUKKE UT
*
FRA
Unnest (generere_array (0, 20, 2)) som jevn;

Koden over oppretter en rekke jevnt tall fra 0 til 20 og konverterer dem til rader ved hjelp av Unnest -funksjonen.

Den resulterende utgangen er vist nedenfor:

til og med
0
2
--- avkortet utgang---
18
20

Du kan lære mer om Unnest -kommandoen i den koblede opplæringen.

Konverter matrisen til streng

Hvis du har en rekke strenger, kan du konvertere den til en streng ved hjelp av array_to_string -funksjonen.

Eksempelbruk er som vist:

PLUKKE UT
Array_to_string (['h', 'e', ​​'l', 'l', 'o'], "");

Koden over konverterer rekke strenger til en enkelt streng. Funksjonssyntaksen er:

Array_to_string (array_expression, avgrensning [, null_text])

Konklusjon

Denne artikkelen ga den grunnleggende kunnskapen om hvordan du jobber med matriser i standard SQL ved hjelp av BigQuery. Det er mer om matrisetypen utover denne opplæringens omfang. Sjekk ressursene nedenfor for å utforske mer.

https: // sky.Google.com/bigquery/docs/referanse/standard-SQL/Arrays

https: // sky.Google.com/bigquery/docs/referanse/standard-SQL/Array_Functions

Takk for at du leste, og jeg håper du likte det!!