ฟังก์ชันอาร์เรย์
| ชื่อ | คำอธิบาย |
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();
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();
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();
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();
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
คำอธิบาย:
แสดงผลองค์ประกอบที่ดัชนี 0 ของ index ใน 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 |
"ก" | ข้อผิดพลาด |
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();
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();
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 ของการเกิด 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 โดยเริ่มจากดัชนีที่อิงตาม 0 offset และรวมองค์ประกอบ length
- หาก
offsetเป็นค่าลบ จะหมายถึงตำแหน่งเริ่มต้นจากท้ายอาร์เรย์ โดย-1จะเป็นองค์ประกอบสุดท้าย - หาก
lengthมากกว่าจำนวนองค์ประกอบที่เหลืออยู่ในอาร์เรย์หลังจากoffsetผลลัพธ์จะขยายไปจนถึงท้ายอาร์เรย์ lengthต้องไม่เป็นค่าลบ มิฉะนั้นจะแสดงผลข้อผิดพลาด
ตัวอย่าง
| อาร์เรย์ | หักลบ | ความยาว | 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 ที่สอดคล้องกัน
ตัวอย่าง
| อาร์เรย์ | นิพจน์ | 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"] | "ก" |
| [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[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" | ข้อผิดพลาด |