ฟังก์ชันอาร์เรย์

ฟังก์ชันอาร์เรย์

ชื่อ คำอธิบาย
ARRAY แสดงผล ARRAY ที่มีองค์ประกอบ 1 รายการสำหรับอาร์กิวเมนต์อินพุตแต่ละรายการ
ARRAY_CONCAT เชื่อมโยงอาร์เรย์หลายรายการเป็น ARRAY รายการเดียว
ARRAY_CONTAINS แสดงผล TRUE หาก ARRAY ที่ระบุมีค่าที่เฉพาะเจาะจง
ARRAY_CONTAINS_ALL แสดงผล TRUE หากค่าทั้งหมดอยู่ใน ARRAY
ARRAY_CONTAINS_ANY แสดงผล TRUE หากมีค่าใดๆ อยู่ใน ARRAY
ARRAY_FILTER กรององค์ประกอบจาก ARRAY ที่ไม่เป็นไปตามเพรดิเคตออก
ARRAY_FIRST แสดงผลองค์ประกอบแรกใน ARRAY
ARRAY_FIRST_N แสดงผลองค์ประกอบ n รายการแรกใน ARRAY
ARRAY_GET แสดงผลองค์ประกอบที่ดัชนีที่ระบุใน ARRAY
ARRAY_INDEX_OF แสดงผลดัชนีของการปรากฏครั้งแรกของค่าใน ARRAY
ARRAY_INDEX_OF_ALL แสดงผลดัชนีทั้งหมดของค่าใน ARRAY
ARRAY_LENGTH แสดงผลจำนวนองค์ประกอบใน ARRAY
ARRAY_LAST แสดงผลองค์ประกอบสุดท้ายใน ARRAY
ARRAY_LAST_N แสดงผลองค์ประกอบ n รายการสุดท้ายใน ARRAY
ARRAY_REVERSE กลับลำดับขององค์ประกอบใน ARRAY
ARRAY_SLICE แสดงผลส่วนของ ARRAY
ARRAY_TRANSFORM เปลี่ยนรูปแบบองค์ประกอบใน ARRAY โดยใช้นิพจน์กับแต่ละองค์ประกอบ
MAXIMUM แสดงผลค่าสูงสุดใน ARRAY
MAXIMUM_N แสดงผลค่าที่มากที่สุด n ค่าใน ARRAY
MINIMUM แสดงผลค่าต่ำสุดใน ARRAY
MINIMUM_N แสดงผลค่าที่น้อยที่สุด n ค่าใน ARRAY
SUM แสดงผลรวมของค่า NUMERIC ทั้งหมดใน ARRAY
JOIN สร้างการเชื่อมโยงองค์ประกอบใน ARRAY เป็นค่า STRING

ARRAY

ไวยากรณ์:

array(values: ANY...) -> ARRAY

คำอธิบาย:

สร้างอาร์เรย์จากองค์ประกอบที่ระบุ

  • หากไม่มีอาร์กิวเมนต์ ระบบจะแทนที่ด้วย NULL ในอาร์เรย์ผลลัพธ์

ตัวอย่างเช่น

values array(values)
() []
(1, 2, 3) [1, 2, 3]
("a", 1, true) ["a", 1, true]
(1, null) [1, null]
(1, [2, 3]) [1, [2, 3]]

ARRAY_CONCAT

ไวยากรณ์:

array_concat(arrays: ARRAY...) -> ARRAY

คำอธิบาย:

เชื่อมโยงอาร์เรย์อย่างน้อย 2 รายการเป็น ARRAY รายการเดียว

ตัวอย่างเช่น

อาร์เรย์ array_concat(arrays)
([1, 2], [3, 4]) [1, 2, 3, 4]
(["a", "b"], ["c"]) ["a", "b", "c"]
([1], [2], [3]) [1, 2, 3]
([], [1, 2]) [1, 2]
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(field("genre").arrayConcat([field("subGenre")]).as("allGenres"))
  .execute();
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([Field("genre").arrayConcat([Field("subGenre")]).as("allGenres")])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(field("genre").arrayConcat(field("subGenre")).alias("allGenres"))
    .execute()

Java

Task<Pipeline.Snapshot> result = db.pipeline()
    .collection("books")
    .select(field("genre").arrayConcat(field("subGenre")).alias("allGenres"))
    .execute();
    
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("books")
    .select(Field.of("genre").array_concat(Field.of("subGenre")).as_("allGenres"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(arrayConcat(field("genre"), field("subGenre")).as("allGenres"))
        .execute()
        .get();
Go
snapshot := client.Pipeline().
	Collection("books").
	Select(firestore.Fields(
		firestore.ArrayConcat(firestore.FieldOf("genre"), firestore.FieldOf("subGenre")).As("allGenres"),
	)).
	Execute(ctx)

ARRAY_CONTAINS

ไวยากรณ์:

array_contains(array: ARRAY, value: ANY) -> BOOLEAN

คำอธิบาย:

แสดงผลเป็น TRUE หากพบ value ใน array และแสดงผลเป็น FALSE หากไม่พบ

ตัวอย่างเช่น

อาร์เรย์ value array_contains(array, value)
[1, 2, 3] 2 จริง
[[1, 2], [3]] [1, 2] จริง
[1, null] Null จริง
"abc" ทั้งหมด ข้อผิดพลาด
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(field("genre").arrayContains(constant("mystery")).as("isMystery"))
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(field("genre").arrayContains(constant("mystery")).as("isMystery"))
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([Field("genre").arrayContains(Constant("mystery")).as("isMystery")])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(field("genre").arrayContains("mystery").alias("isMystery"))
    .execute()

Java

Task<Pipeline.Snapshot> result = db.pipeline()
    .collection("books")
    .select(field("genre").arrayContains("mystery").alias("isMystery"))
    .execute();
    
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("books")
    .select(Field.of("genre").array_contains("mystery").as_("isMystery"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(arrayContains(field("genre"), "mystery").as("isMystery"))
        .execute()
        .get();
Go
snapshot := client.Pipeline().
	Collection("books").
	Select(firestore.Fields(
		firestore.ArrayContains(firestore.FieldOf("genre"), "mystery").As("isMystery"),
	)).
	Execute(ctx)

ARRAY_CONTAINS_ALL

ไวยากรณ์:

array_contains_all(array: ARRAY, search_values: ARRAY) -> BOOLEAN

คำอธิบาย:

แสดงผลเป็น TRUE หากพบ search_values ทั้งหมดใน array และแสดงผลเป็น FALSE หากไม่พบ

ตัวอย่างเช่น

อาร์เรย์ search_values array_contains_all(array, search_values)
[1, 2, 3] [1, 2] จริง
[1, 2, 3] [1, 4] เท็จ
[1, null] [null] จริง
[NaN] [NaN] จริง
[] [] จริง
[1, 2, 3] [] จริง
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(
    field("genre")
      .arrayContainsAll([constant("fantasy"), constant("adventure")])
      .as("isFantasyAdventure")
  )
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(
    field("genre")
      .arrayContainsAll([constant("fantasy"), constant("adventure")])
      .as("isFantasyAdventure")
  )
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([
    Field("genre")
      .arrayContainsAll([Constant("fantasy"), Constant("adventure")])
      .as("isFantasyAdventure")
  ])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(
        field("genre")
            .arrayContainsAll(listOf("fantasy", "adventure"))
            .alias("isFantasyAdventure")
    )
    .execute()

Java

Task<Pipeline.Snapshot> result = db.pipeline()
    .collection("books")
    .select(
        field("genre")
            .arrayContainsAll(Arrays.asList("fantasy", "adventure"))
            .alias("isFantasyAdventure")
    )
    .execute();
    
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("books")
    .select(
        Field.of("genre")
        .array_contains_all(["fantasy", "adventure"])
        .as_("isFantasyAdventure")
    )
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(
            arrayContainsAll(field("genre"), Arrays.asList("fantasy", "adventure"))
                .as("isFantasyAdventure"))
        .execute()
        .get();
Go
snapshot := client.Pipeline().
	Collection("books").
	Select(firestore.Fields(
		firestore.ArrayContainsAll(firestore.FieldOf("genre"), []string{"fantasy", "adventure"}).As("isFantasyAdventure"),
	)).
	Execute(ctx)

ARRAY_CONTAINS_ANY

ไวยากรณ์:

array_contains_any(array: ARRAY, search_values: ARRAY) -> BOOLEAN

คำอธิบาย:

แสดงผล TRUE หากพบ search_values ใน array และแสดงผล FALSE หากไม่พบ

ตัวอย่างเช่น

อาร์เรย์ search_values array_contains_any(array, search_values)
[1, 2, 3] [4, 1] จริง
[1, 2, 3] [4, 5] เท็จ
[1, 2, null] [null] จริง
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(
    field("genre")
      .arrayContainsAny([constant("fantasy"), constant("nonfiction")])
      .as("isMysteryOrFantasy")
  )
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(
    field("genre")
      .arrayContainsAny([constant("fantasy"), constant("nonfiction")])
      .as("isMysteryOrFantasy")
  )
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([
    Field("genre")
      .arrayContainsAny([Constant("fantasy"), Constant("nonfiction")])
      .as("isMysteryOrFantasy")
  ])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(
        field("genre")
            .arrayContainsAny(listOf("fantasy", "nonfiction"))
            .alias("isMysteryOrFantasy")
    )
    .execute()

Java

Task<Pipeline.Snapshot> result = db.pipeline()
    .collection("books")
    .select(
        field("genre")
            .arrayContainsAny(Arrays.asList("fantasy", "nonfiction"))
            .alias("isMysteryOrFantasy")
    )
    .execute();
    
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("books")
    .select(
        Field.of("genre")
        .array_contains_any(["fantasy", "nonfiction"])
        .as_("isMysteryOrFantasy")
    )
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(
            arrayContainsAny(field("genre"), Arrays.asList("fantasy", "nonfiction"))
                .as("isMysteryOrFantasy"))
        .execute()
        .get();
Go
snapshot := client.Pipeline().
	Collection("books").
	Select(firestore.Fields(
		firestore.ArrayContainsAny(firestore.FieldOf("genre"), []string{"fantasy", "nonfiction"}).As("isMysteryOrFantasy"),
	)).
	Execute(ctx)

ARRAY_FILTER

ไวยากรณ์:

array_filter(array: ARRAY, predicate: (ANY) -> BOOLEAN) -> ARRAY

คำอธิบาย:

กรอง array โดยใช้นิพจน์ predicate และแสดงผลอาร์เรย์ใหม่ที่มีเฉพาะองค์ประกอบที่ตรงตามเพรดิเคต

  • ระบบจะประเมิน predicate สำหรับแต่ละองค์ประกอบใน array หากแสดงผลเป็น true องค์ประกอบจะรวมอยู่ในผลลัพธ์ แต่หากแสดงผลเป็นอย่างอื่น (เช่น false หรือ null) ระบบจะไม่รวมองค์ประกอบนั้น
  • หาก predicate ประเมินเป็นค่าที่ไม่ใช่บูลีนหรือไม่ใช่ค่า Null ฟังก์ชันจะแสดงผลข้อผิดพลาด

ตัวอย่างเช่น

อาร์เรย์ ภาคแสดง array_filter(array, predicate)
[1, 2, 3] x -> x > 1 [2, 3]
[1, null, 3] x -> x > 1 [3]
["a", "b", "c"] x -> x != "b" ["a", "c"]
[] x -> true []

ARRAY_GET

ไวยากรณ์:

array_get(array: ARRAY, index: INT64) -> ANY

คำอธิบาย:

แสดงผลองค์ประกอบที่ index แบบอิงตาม 0 ใน array

  • หาก index เป็นค่าลบ ระบบจะเข้าถึงองค์ประกอบจากส่วนท้ายของอาร์เรย์ โดยที่ -1 เป็นองค์ประกอบสุดท้าย
  • หาก array ไม่ใช่ประเภท ARRAY และไม่ใช่ null ระบบจะแสดงข้อผิดพลาด
  • หาก index อยู่นอกขอบเขต ฟังก์ชันจะแสดงผลเป็นค่าที่ไม่มีอยู่
  • หาก index ไม่ใช่ประเภท INT64 ฟังก์ชันจะแสดงผลข้อผิดพลาด

ตัวอย่างเช่น

อาร์เรย์ ดัชนี array_get(array, index)
[1, 2, 3] 0 1
[1, 2, 3] -1 3
[1, 2, 3] 3 ขาดเรียน
[1, 2, 3] -4 ขาดเรียน
"abc" 0 ข้อผิดพลาด
Null 0 Null
Array "a" ข้อผิดพลาด
Array 2.0 ข้อผิดพลาด

ARRAY_LENGTH

ไวยากรณ์:

array_length(array: ARRAY) -> INT64

คำอธิบาย:

แสดงผลจำนวนองค์ประกอบใน array

ตัวอย่างเช่น

อาร์เรย์ array_length(array)
[1, 2, 3] 3
[] 0
[1, 1, 1] 3
[1, null] 2
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(field("genre").arrayLength().as("genreCount"))
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(field("genre").arrayLength().as("genreCount"))
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([Field("genre").arrayLength().as("genreCount")])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(field("genre").arrayLength().alias("genreCount"))
    .execute()

Java

Task<Pipeline.Snapshot> result = db.pipeline()
    .collection("books")
    .select(field("genre").arrayLength().alias("genreCount"))
    .execute();
    
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("books")
    .select(Field.of("genre").array_length().as_("genreCount"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(arrayLength(field("genre")).as("genreCount"))
        .execute()
        .get();
Go
snapshot := client.Pipeline().
	Collection("books").
	Select(firestore.Fields(
		firestore.ArrayLength(firestore.FieldOf("genre")).As("genreCount"),
	)).
	Execute(ctx)

ARRAY_REVERSE

ไวยากรณ์:

array_reverse(array: ARRAY) -> ARRAY

คำอธิบาย:

กลับด้าน array ที่ระบุ

ตัวอย่างเช่น

อาร์เรย์ array_reverse(array)
[1, 2, 3] [3, 2, 1]
["a", "b"] ["b", "a"]
[1, 2, 2, 3] [3, 2, 2, 1]
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(arrayReverse(field("genre")).as("reversedGenres"))
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(field("genre").arrayReverse().as("reversedGenres"))
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([Field("genre").arrayReverse().as("reversedGenres")])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(field("genre").arrayReverse().alias("reversedGenres"))
    .execute()
    

Java

Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .select(field("genre").arrayReverse().alias("reversedGenres")) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("books")
    .select(Field.of("genre").array_reverse().as_("reversedGenres"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(arrayReverse(field("genre")).as("reversedGenres"))
        .execute()
        .get();
Go
snapshot := client.Pipeline().
	Collection("books").
	Select(firestore.Fields(
		firestore.ArrayReverse(firestore.FieldOf("genre")).As("reversedGenres"),
	)).
	Execute(ctx)

ARRAY_FIRST

ไวยากรณ์:

array_first(array: ARRAY) -> ANY

คำอธิบาย:

แสดงผลองค์ประกอบแรกใน array ซึ่งเทียบเท่ากับ array_get(array, 0)

  • หาก array ว่างเปล่า ระบบจะแสดงค่าที่ไม่มีอยู่

ตัวอย่างเช่น

อาร์เรย์ array_first(array)
[1, 2, 3] 1
[] ขาดเรียน

ARRAY_FIRST_N

ไวยากรณ์:

array_first_n(array: ARRAY, n: INT64) -> ARRAY

คำอธิบาย:

แสดงผลองค์ประกอบ n แรกของ array ซึ่งเทียบเท่ากับ array_slice(array, 0, n)

  • หาก n เป็นค่าลบ ระบบจะแสดงผลข้อผิดพลาด

ตัวอย่างเช่น

อาร์เรย์ n array_first_n(array, n)
[1, 2, 3, 4, 5] 3 [1, 2, 3]
[1, 2] 3 [1, 2]
[1, 2, 3] 0 []

ARRAY_INDEX_OF

ไวยากรณ์:

array_index_of(array: ARRAY, value: ANY) -> INT64

คำอธิบาย:

แสดงดัชนีแบบ 0 ของการปรากฏครั้งแรกของ value ใน array แสดงผล -1 หากไม่พบ value

ตัวอย่างเช่น

อาร์เรย์ value array_index_of(array, value)
[1, 2, 3, 2] 2 1
[1, 2, 3] 4 -1
[1, null, 3] Null 1

ARRAY_INDEX_OF_ALL

ไวยากรณ์:

array_index_of_all(array: ARRAY, value: ANY) -> ARRAY<INT64>

คำอธิบาย:

แสดงผลอาร์เรย์ที่มีดัชนีแบบ 0-based ของรายการทั้งหมดที่พบ value ใน array แสดงผล [] หากไม่พบ value

ตัวอย่างเช่น

อาร์เรย์ value array_index_of_all(array, value)
[1, 2, 3, 2] 2 [1, 3]
[1, 2, 3] 4 []
[1, null, 3, null] Null [1, 3]

ARRAY_LAST

ไวยากรณ์:

array_last(array: ARRAY) -> ANY

คำอธิบาย:

แสดงองค์ประกอบสุดท้ายใน array ซึ่งเทียบเท่ากับ array_get(array, -1)

  • หาก array ว่างเปล่า ระบบจะแสดงค่าที่ไม่มีอยู่

ตัวอย่างเช่น

อาร์เรย์ array_last(array)
[1, 2, 3] 3
[] ขาดเรียน

ARRAY_LAST_N

ไวยากรณ์:

array_last_n(array: ARRAY, n: INT64) -> ARRAY

คำอธิบาย:

แสดงผลองค์ประกอบ n สุดท้ายของ array

  • หาก n เป็นค่าลบ ระบบจะแสดงผลข้อผิดพลาด

ตัวอย่างเช่น

อาร์เรย์ n array_last_n(array, n)
[1, 2, 3, 4, 5] 3 [3, 4, 5]
[1, 2] 3 [1, 2]
[1, 2, 3] 0 []

ARRAY_SLICE

ไวยากรณ์:

array_slice(array: ARRAY, offset: INT64, length: INT64) -> ARRAY

คำอธิบาย:

แสดงผลชุดย่อยของ array โดยเริ่มจากดัชนี offset ที่อิงตาม 0 และรวมองค์ประกอบ length รายการ

  • หาก offset เป็นค่าลบ จะหมายถึงตำแหน่งเริ่มต้นจากจุดสิ้นสุดของอาร์เรย์ โดยมี -1 เป็นองค์ประกอบสุดท้าย
  • หาก length มากกว่าจำนวนองค์ประกอบที่เหลืออยู่ในอาร์เรย์หลังจาก offset ผลลัพธ์จะขยายไปจนถึงจุดสิ้นสุดของอาร์เรย์
  • length ต้องไม่เป็นค่าลบ ไม่เช่นนั้นระบบจะแสดงข้อผิดพลาด

ตัวอย่างเช่น

อาร์เรย์ offset ความยาว array_slice(array, offset, length)
[1, 2, 3, 4, 5] 1 3 [2, 3, 4]
[1, 2, 3, 4, 5] -2 2 [4, 5]
[1, 2, 3] 1 5 [2, 3]
[1, 2, 3] 3 2 []

ARRAY_TRANSFORM

ไวยากรณ์:

array_transform(array: ARRAY, expression: (ANY) -> ANY) -> ARRAY
array_transform(array: ARRAY, expression: (ANY, INT64) -> ANY) -> ARRAY

คำอธิบาย:

เปลี่ยนรูปแบบ array โดยใช้ expression กับแต่ละองค์ประกอบ และแสดงผลอาร์เรย์ใหม่ที่มีองค์ประกอบที่เปลี่ยนรูปแบบแล้ว อาร์เรย์เอาต์พุตจะมีขนาดเท่ากับอาร์เรย์อินพุตเสมอ

  • expression อาจเป็นฟังก์ชันยูนารี element -> result หรือฟังก์ชันไบนารี (element, index) -> result ก็ได้
  • หาก expression เป็นแบบเอกภาพ ระบบจะเรียกใช้ด้วยแต่ละองค์ประกอบของ array
  • หาก expression เป็นแบบไบนารี ระบบจะเรียกใช้ฟังก์ชันนี้กับแต่ละองค์ประกอบของ array และดัชนีแบบ 0-based ที่เกี่ยวข้อง

ตัวอย่างเช่น

อาร์เรย์ นิพจน์ array_transform(array, expression)
[1, 2, 3] x -> x * 2 [2, 4, 6]
[1, 2, 3] x -> x + 1 [2, 3, 4]
[10, 20] (x, i) -> x + i [10, 21]
[] x -> 1 []

สูงสุด

ไวยากรณ์:

maximum(array: ARRAY) -> ANY

คำอธิบาย:

แสดงผลค่าสูงสุดใน array

  • ระบบจะไม่สนใจค่า NULL ในระหว่างการเปรียบเทียบ
  • หาก array ว่างเปล่าหรือมีเฉพาะค่า NULL ระบบจะแสดงผล NULL

ตัวอย่างเช่น

อาร์เรย์ maximum(array)
[1, 5, 2] 5
[1, null, 5] 5
["a", "c", "b"] "c"
[null, null] Null
[] Null

MAXIMUM_N

ไวยากรณ์:

maximum_n(array: ARRAY, n: INT64) -> ARRAY

คำอธิบาย:

แสดงผลอาร์เรย์ของค่าที่มากที่สุด n ค่าใน array โดยเรียงลำดับจากมากไปน้อย

  • ระบบจะไม่สนใจค่า NULL
  • หาก n เป็นค่าลบ ระบบจะแสดงผลข้อผิดพลาด

ตัวอย่างเช่น

อาร์เรย์ n maximum_n(array, n)
[1, 5, 2, 4, 3] 3 [5, 4, 3]
[1, null, 5] 3 [5, 1]

ขั้นต่ำ

ไวยากรณ์:

minimum(array: ARRAY) -> ANY

คำอธิบาย:

แสดงผลค่าต่ำสุดใน array

  • ระบบจะไม่สนใจค่า NULL ในระหว่างการเปรียบเทียบ
  • หาก array ว่างเปล่าหรือมีเฉพาะค่า NULL ระบบจะแสดงผล NULL

ตัวอย่างเช่น

อาร์เรย์ minimum(array)
[1, 5, 2] 1
[5, null, 1] 1
["a", "c", "b"] "a"
[null, null] Null
[] Null

MINIMUM_N

ไวยากรณ์:

minimum_n(array: ARRAY, n: INT64) -> ARRAY

คำอธิบาย:

แสดงผลอาร์เรย์ของค่าที่น้อยที่สุด n ค่าใน array โดยเรียงลำดับจากน้อยไปมาก

  • ระบบจะไม่สนใจค่า NULL
  • หาก n เป็นค่าลบ ระบบจะแสดงผลข้อผิดพลาด

ตัวอย่างเช่น

อาร์เรย์ n minimum_n(array, n)
[1, 5, 2, 4, 3] 3 [1, 2, 3]
[5, null, 1] 3 [1, 5]

SUM

ไวยากรณ์:

sum(array: ARRAY) -> INT64 | FLOAT64

คำอธิบาย:

แสดงผลรวมของค่า NUMERIC ทั้งหมดใน ARRAY

  • ระบบจะไม่สนใจค่าที่ไม่ใช่ตัวเลขในอาร์เรย์
  • หากค่าตัวเลขใดๆ ในอาร์เรย์เป็น NaN ฟังก์ชันจะแสดงผลเป็น NaN
  • ประเภทการแสดงผลจะกำหนดโดยประเภทตัวเลขที่กว้างที่สุดในอาร์เรย์: INT64 < FLOAT64
  • หากเกิดข้อผิดพลาดจำนวนเต็ม 64 บิตเกินขอบเขตก่อนที่จะรวมค่าจุดลอยตัว ระบบจะแสดงข้อผิดพลาด หากรวมค่าจุดลอยตัว ค่าที่เกินจะส่งผลให้เป็น +/- อนันต์
  • หากอาร์เรย์ไม่มีค่าตัวเลขเลย ฟังก์ชันจะแสดงผล NULL

ตัวอย่างเช่น

อาร์เรย์ sum(array)
[1, 2, 3] 6L
[1L, 2L, 3L] 6L
[2000000000, 2000000000] 4000000000L
[10, 20.5] 30.5
[1, "a", 2] 3L
[INT64.MAX_VALUE, 1] ข้อผิดพลาด
[INT64.MAX_VALUE, 1, -1.0] ข้อผิดพลาด
[INT64.MAX_VALUE, 1.0] 9.223372036854776e+18

JOIN

ไวยากรณ์:

join[T <: STRING | BYTES](array: ARRAY<T>, delimiter: T) -> STRING
join[T <: STRING | BYTES](array: ARRAY<T>, delimiter: T, null_text: T) -> STRING

คำอธิบาย:

แสดงผลการเชื่อมโยงองค์ประกอบใน array เป็น STRING array อาจเป็นข้อมูลประเภท STRING หรือ BYTES

  • องค์ประกอบทั้งหมดใน array, delimiter และ null_text ต้องเป็นประเภทเดียวกัน โดยต้องเป็น STRING ทั้งหมดหรือ BYTES ทั้งหมด
  • หากระบุ null_text ระบบจะแทนที่ค่า NULL ใน array ด้วย null_text
  • หากไม่ได้ระบุ null_text ระบบจะไม่รวมค่า NULL ใน array ไว้ในผลลัพธ์

ตัวอย่างเช่น

เมื่อไม่ได้ระบุ null_text:

อาร์เรย์ ตัวคั่น join(array, delimiter)
["a", "b", "c"] "," "a,b,c"
["a", null, "c"] "," "a,c"
[b'a', b'b', b'c'] b',' b'a,b,c'
["a", b'c'] "," ข้อผิดพลาด
["a", "c"] b',' ข้อผิดพลาด
[b'a', b'c'] "," ข้อผิดพลาด

เมื่อระบุ null_text:

อาร์เรย์ ตัวคั่น null_text join(array, delimiter, null_text)
["a", null, "c"] "," "MISSING" "a,MISSING,c"
[b'a', null, b'c'] b',' b'NULL' b'a,NULL,c'
[null, "b", null] "," "MISSING" "MISSING,b,MISSING"
[b'a', null, null] b',' b'NULL' b'a,NULL,NULL'
["a", null] "," b'N' ข้อผิดพลาด
[b'a', null] b',' "N" ข้อผิดพลาด