Hologres, PostgreSQL küme döndüren işlevlerinin bir alt kümesini destekler. Bu işlevler tek bir çağrıyı bir satır kümesine genişleterek SQL sorguları içinde diziler ve dizi alt indisleri oluşturmak için kullanışlıdır.
Tam PostgreSQL teknik özellikleri için PostgreSQL belgelerindeki Set Returning Functions konusuna bakın.
Desteklenen işlevler
| İşlev | Bağımsız değişken türleri | Dönüş türü | Açıklama |
|---|---|---|---|
| GENERATE_SERIES(start, stop [, step]) | INT, BIGINT veya NUMERIC | setof INT, BIGINT veya NUMERIC | start değerinden stop değerine kadar sayısal bir dizi oluşturur. |
| GENERATE_SERIES(start, stop, step INTERVAL) | TIMESTAMP veya TIMESTAMP WITH TIME ZONE | setof TIMESTAMP veya TIMESTAMP WITH TIME ZONE | start değerinden stop değerine kadar zaman damgası dizisi oluşturur. |
| GENERATE_SUBSCRIPTS(anyarray, dim) | Herhangi bir dizi türü, INT | setof INT | Bir dizinin tek bir boyutu için geçerli alt indisleri oluşturur. |
GENERATE_SERIES
start değerinden stop değerine kadar, step değeri kadar artışlarla bir değer dizisi oluşturur. Hem start hem de stop değerleri dahildir.
İmzalar
GENERATE_SERIES(start, stop [, step]) -- numeric sequence
GENERATE_SERIES(start, stop, step INTERVAL) -- timestamp sequence
Sayısal dizi
INT, BIGINT veya NUMERIC değerlerinden oluşan bir dizi oluşturur.
Parametreler
| Parametre | Zorunlu | Veri türü | Açıklama |
|---|---|---|---|
start |
Evet | INT, BIGINT veya NUMERIC | Dizideki ilk değer. |
stop |
Evet | INT, BIGINT veya NUMERIC | Dizideki son değer (dahil). |
step |
Hayır | INT, BIGINT veya NUMERIC | Değerler arasındaki artış miktarı. Varsayılan değer 1 değeridir. |
Dönüş türü: Giriş parametreleriyle aynı veri türünde bir değer kümesi.
Örnekler
Varsayılan artışla artan dizi:
SELECT GENERATE_SERIES(2, 4);
generate_series
-----------------
2
3
4
Negatif artışla azalan dizi:
SELECT GENERATE_SERIES(5, 1, -2);
generate_series
-----------------
5
3
1
Zaman damgası dizisi
TIMESTAMP veya TIMESTAMP WITH TIME ZONE değerlerinden oluşan bir dizi oluşturur.
Parametreler
| Parametre | Zorunlu | Veri türü | Açıklama |
|---|---|---|---|
start |
Evet | TIMESTAMP veya TIMESTAMP WITH TIME ZONE | Dizideki ilk değer. |
stop |
Evet | TIMESTAMP veya TIMESTAMP WITH TIME ZONE | Dizideki son değer (dahil). |
step |
Evet | INTERVAL | Değerler arasındaki zaman aralığı. |
Dönüş türü: Giriş parametreleriyle aynı veri türünde bir değer kümesi.
Örnek
SELECT GENERATE_SERIES('2024-10-01 00:00'::timestamp, '2024-10-01 12:00', '10 hours');
generate_series
---------------------
2024-10-01 00:00:00
2024-10-01 10:00:00
GENERATE_SUBSCRIPTS
Bir dizinin belirtilen boyutu için geçerli alt indisleri oluşturur. Dizi öğelerini dizin numarasına göre yinelemek için bu işlevi kullanın.
İmza
GENERATE_SUBSCRIPTS(anyarray, dim)
Parametreler
| Parametre | Zorunlu | Veri türü | Açıklama |
|---|---|---|---|
anyarray |
Evet | Herhangi bir dizi türü | Alt indisleri oluşturulacak, herhangi bir türdeki çok boyutlu dizi. |
dim |
Evet | INT | Alt indislerin oluşturulacağı dizi boyutu. |
Dönüş türü: Geçerli alt indisleri temsil eden bir tamsayı kümesi.
Örnek
SELECT GENERATE_SUBSCRIPTS('{NULL,1,NULL,2}'::int[], 1);
generate_subscripts
---------------------
1
2
3
4