หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
บทความนี้ให้ไวยากรณ์ Spark SQL สําหรับการสร้าง รายการ เปลี่ยนชื่อ และลบวิวทะเลสาบที่ปรากฏใน Fabric
เคล็ดลับ
หากต้องการสร้างมุมมองทะเลสาบที่เป็นรูปธรรมครั้งแรก โปรดดู เริ่มต้นใช้งานมุมมองทะเลสาบที่เป็นรูปธรรม
สร้างมุมมองทะเลสาบที่เป็นรูปธรรม
คุณสามารถกําหนดมุมมองทะเลสาบที่เป็นรูปธรรมได้จากตารางใดก็ได้หรือจากมุมมองทะเลสาบที่เป็นรูปธรรมอื่นภายในเลคเฮาส์
ไวยากรณ์
CREATE [OR REPLACE] MATERIALIZED LAKE VIEW [IF NOT EXISTS] [workspace.lakehouse.schema].MLV_Identifier
[(
CONSTRAINT constraint_name1 CHECK (condition expression1) [ON MISMATCH DROP | FAIL],
CONSTRAINT constraint_name2 CHECK (condition expression2) [ON MISMATCH DROP | FAIL]
)]
[(
REFRESH_HINT <hint_name> UNIQUE (<column1> [, <column2>, ...])
)]
[PARTITIONED BY (col1, col2, ... )]
[COMMENT "description or comment"]
[TBLPROPERTIES ("key1"="val1", "key2"="val2", ... )]
AS select_statement
หมายเหตุ
- ตอนนี้
REFRESH_HINTอยู่ในขั้นตอนพรีวิว สําหรับรายละเอียดเพิ่มเติมเกี่ยวกับการใช้คําแนะนํารีเฟรช ดูที่ เปิดใช้งานการรีเฟรชที่เหมาะสมสําหรับการลบและอัปเดตในวิวทะเลสาบที่สร้างขึ้นจริง (ตัวอย่าง) - หากชื่อพื้นที่ทํางานของคุณมีช่องว่าง ให้ใส่เครื่องหมายแบ็คติ๊ก:
`My Workspace`.lakehouse.schema.view_name - ชื่อมุมมองทะเลสาบที่เป็นรูปธรรมจะคํานึงถึงตัวพิมพ์เล็กและตัวพิมพ์เล็ก (เช่น
MyTestViewmytestviewกลายเป็น )
อาร์กิวเมนต์
| พารามิเตอร์ | คำอธิบาย |
|---|---|
OR REPLACE |
เขียนทับมุมมองทะเลสาบที่เป็นรูปธรรมที่มีอยู่ด้วยชื่อเดียวกัน ใช้ร่วมกับ IF NOT EXISTS. |
IF NOT EXISTS |
สร้างมุมมองทะเลสาบที่เป็นรูปธรรมก็ต่อเมื่อยังไม่มีอยู่ คําสั่งจะสําเร็จโดยไม่มีข้อผิดพลาดหากมีการกําหนดมุมมองไว้แล้ว ใช้ร่วมกับ OR REPLACE. |
MLV_Identifier |
ชื่อของมุมมองทะเลสาบที่เป็นภาพ สามารถมีคุณสมบัติครบถ้วนเป็นworkspace.lakehouse.schema.name |
CONSTRAINT ... CHECK |
กําหนดกฎคุณภาพข้อมูล
CHECKส่วนคําสั่งระบุนิพจน์บูลีนที่แต่ละแถวต้องตอบสนอง คุณสามารถกําหนดข้อจํากัดได้หลายอย่าง |
ON MISMATCH |
การดําเนินการเมื่อแถวละเมิดข้อจํากัด
DROP ลบแถวอย่างเงียบ ๆ FAIL หยุดการรีเฟรชด้วยข้อผิดพลาด ค่าเริ่มต้นคือ FAIL. |
REFRESH_HINT |
ประกาศคอลัมน์หนึ่งหรือมากกว่าที่ระบุแถวอย่างเฉพาะเจาะจงสําหรับการประมวลผลอัปเดตและลบแบบเพิ่มทีละน้อย (พรีวิว) |
PARTITIONED BY |
คอลัมน์เพื่อแบ่งพาร์ติชันมุมมองทะเลสาบที่เป็นรูปธรรม ซึ่งสามารถปรับปรุงประสิทธิภาพการสืบค้นสําหรับการอ่านที่กรองได้ |
COMMENT |
คําอธิบายข้อความอิสระที่จัดเก็บพร้อมกับคําจํากัดความมุมมองทะเลสาบที่เป็นรูปธรรม |
TBLPROPERTIES |
คู่คีย์-ค่าที่จัดเก็บเป็นข้อมูลเมตาในมุมมองทะเลสาบที่เป็นรูปธรรม |
AS select_statement |
SELECTคิวรีที่กําหนดข้อมูลในมุมมองทะเลสาบที่เป็นรูปธรรม |
ตัวอย่าง
ตัวอย่างต่อไปนี้สร้างมุมมองทะเลสาบที่เป็นรูปธรรมที่มีข้อจํากัดด้านคุณภาพข้อมูล ข้อคิดเห็น และการแบ่งพาร์ติชัน
OR REPLACEส่วนคําสั่งจะเขียนทับมุมมองที่มีอยู่ด้วยชื่อเดียวกัน
CREATE OR REPLACE MATERIALIZED LAKE VIEW silver.cleaned_order_data
(
CONSTRAINT valid_quantity CHECK (quantity > 0) ON MISMATCH DROP
)
PARTITIONED BY (category)
COMMENT "Cleaned order data joined from products and orders"
AS SELECT
p.productID,
p.productName,
p.category,
o.orderDate,
o.quantity,
o.totalAmount
FROM bronze.products p INNER JOIN bronze.orders o
ON p.productID = o.productID
ตัวอย่างต่อไปนี้สร้างมุมมองทะเลสาบที่เป็นรูปธรรมที่เรียบง่ายกว่า
IF NOT EXISTSส่วนคําสั่งจะป้องกันข้อผิดพลาดหากมีมุมมองอยู่แล้ว ทําให้ปลอดภัยสําหรับสคริปต์การปรับใช้
CREATE MATERIALIZED LAKE VIEW IF NOT EXISTS silver.products_with_sales AS
SELECT
p.productID,
p.productName,
p.category,
CASE
WHEN COUNT(o.orderID) OVER (PARTITION BY p.productID) > 0 THEN TRUE
ELSE FALSE
END AS has_sales
FROM bronze.products p LEFT JOIN bronze.orders o
ON p.productID = o.productID
เคล็ดลับ
จัดการการรีเฟรชมุมมองทะเลสาบที่เป็นรูปธรรมจากเลคเฮาส์ของคุณ
หลังจากที่คุณสร้างมุมมองทะเลสาบที่เป็นรูปธรรมแล้ว อย่าจัดระเบียบการรีเฟรชจากสมุดบันทึก ให้ใช้ความสามารถในตัวสองอย่างบนเลคเฮาส์แทน:
- เชื้อสาย: Fabric ได้รับลําดับการพึ่งพาระหว่างมุมมองทะเลสาบที่เป็นรูปธรรมของคุณจากคําจํากัดความ เมื่อต้องการเปิดมุมมองสายข้อมูล ให้เลือกแท็บ มุมมองทะเลสาบที่เป็นรูปธรรม ใน Ribbon จากนั้นเลือก จัดการ จากนั้น คุณสามารถติดตามการเรียกใช้ที่กําลังดําเนินการอยู่ และตรวจสอบการขึ้นต่อกันอัปสตรีมและดาวน์สตรีมสําหรับแต่ละมุมมอง
- การรีเฟรชตามกําหนดการ: จากมุมมอง จัดการ เดียวกัน ให้สร้างกําหนดการอย่างน้อยหนึ่งรายการเพื่อรีเฟรชมุมมองทะเลสาบที่เป็นรูปธรรมทั้งหมดหรือชุดย่อยที่เลือก แต่ละกําหนดการจะทํางานอย่างอิสระและรีเฟรชมุมมองตามลําดับการขึ้นต่อกัน ดังนั้นมุมมองดาวน์สตรีมจะอ่านข้อมูลใหม่จากมุมมองอัปสตรีมเสมอ Fabric ลองความล้มเหลวชั่วคราวให้คุณอีกครั้ง
ใช้สมุดบันทึกเพื่อเขียนและทําซ้ําคําจํากัดความของมุมมองทะเลสาบที่เป็นรูปธรรมของคุณ ให้สายข้อมูลและการรีเฟรชตามกําหนดเวลาจัดการการสั่งซื้อ การดําเนินการ และการลองใหม่ — สําหรับข้อมูลที่เชื่อถือได้และทําซ้ําได้โดยใช้โค้ดที่ต้องบํารุงรักษาน้อยลง
นําเข้าไฟล์ด้วย USING OneLake_Files
นอกจากการกําหนดมุมมองทะเลสาบที่สร้างขึ้นจากตารางแล้ว คุณยังสามารถกําหนดมุมมองที่นําเข้าไฟล์ CSV หรือ Parquet โดยตรงจาก OneLake ได้ มุมมอง การรับไฟล์ ใช้ USING OneLake_Files ร่วมกับโฟลเดอร์ OneLake จริง, ทางลัดโฟลเดอร์ OneLake หรือเส้นทางไฟล์เดียว คุณสามารถใช้ FROM-less AS SELECT clause เพื่อกรอง จัดรูปร่าง และรวมแหล่งข้อมูลเมื่อนําเข้าได้
ตารางต่อไปนี้แสดงไวยากรณ์ที่ใช้กับแต่ละสไตล์การเขียน:
| แอสเพ็กต์ | มุมมองทะเลสาบแบบวัตถุที่อิงตาราง | มุมมองทะเลสาบที่สร้างขึ้นในรูปแบบไฟล์ |
|---|---|---|
| แหล่งข้อมูลของ | โต๊ะหรือภาพวิวทะเลสาบที่สร้างขึ้นจริง | โฟลเดอร์ OneLake แบบกายภาพ, ทางลัดโฟลเดอร์ OneLake หรือไฟล์เดียว |
| คำนิยาม | AS select_statement |
USING OneLake_Files
+
OPTIONS + ตัวเลือก FROM-less AS SELECT |
| รูปแบบ | ตารางที่สามารถสอบถามได้ทุกตาราง | CSV, ปาร์เก้ |
| เค้าร่าง | ได้มาจาก SELECT |
schema_mode
=
DYNAMIC หรือ FIXED |
| สายพันธุ์ต้นทาง | ตาราง/มุมมองต้นน้ํา | ตําแหน่งต้นทาง;สามารถฉาย __filepath__ คอลัมน์เมตาดาต้าต้นทางได้หากต้องการการติดตามไฟล์ต่อแถว |
| เลเยอร์ทั่วไป | เงิน ทอง | Bronze |
| ข้อจํากัดด้านคุณภาพของข้อมูล | ได้รับการสนับสนุน | รองรับขณะนําเข้าข้อมูล |
ไวยากรณ์
CREATE [OR REPLACE] MATERIALIZED LAKE VIEW [IF NOT EXISTS] [workspace.lakehouse.schema].MLV_Identifier
[(
CONSTRAINT constraint_name CHECK (condition) ON MISMATCH DROP | FAIL
)]
USING OneLake_Files
OPTIONS (
'format' = 'csv' | 'parquet',
'path' = 'abfss://<workspace>@<host>/<lakehouse>/Files/<folder-or-file>',
['header' = 'true' | 'false',]
['delimiter' = '<char>',]
[...]
)
[PARTITIONED BY (column_name [, ...])]
[COMMENT "description"]
[TBLPROPERTIES (
'schema_mode' = 'DYNAMIC' | 'FIXED',
'refresh_mode' = 'APPEND_ONLY' | 'FULL' | 'MIRROR'
)]
[AS SELECT select_expression [...] [WHERE condition]
[GROUP BY expression [, ...]] [HAVING condition]]
หมายเหตุ
อย่าระบุ FROM clause ในการนําเข้า AS SELECTไฟล์ ซอร์สโค้ดถูกผูกมัดไว้แล้วด้วยUSING OneLake_Filespathตัวเลือก
อ้างอิง OPTIONS
| ตัวเลือก | นำไปใช้กับ | คำอธิบาย |
|---|---|---|
format |
CSV, ปาร์เก้ | รูปแบบไฟล์ต้นทาง ค่าที่รองรับคือ csv และparquet |
path |
CSV, ปาร์เก้ | โฟลเดอร์ OneLake แบบกายภาพ, ทางลัดโฟลเดอร์ OneLake หรือเส้นทาง ABFSS แบบไฟล์เดียว ไฟล์ที่มีอยู่ในโฟลเดอร์ย่อยซ้อนกันจะถูกนําเข้าแบบวนซ้ําเมื่อสร้างมุมมอง ใช้เครื่องหมายสแลชท้ายโฟลเดอร์ หรือใส่นามสกุลไฟล์สําหรับไฟล์เดียว |
header |
CSV | ระบุว่าแถวแรกของแต่ละไฟล์มีชื่อคอลัมน์หรือไม่ ค่าเริ่มต้นเป็นfalse |
delimiter |
CSV | ตัวคั่นฟิลด์ (เช่น , หรือ |) ค่าเริ่มต้นเป็นเครื่องหมายจุลภาค |
sep |
CSV | ชื่อเล่นสําหรับ delimiter. |
quote |
CSV | อักขระที่ใช้อ้างอิงค่า |
escape |
CSV | อักขระที่ใช้หลบหนีคําพูดภายในค่าที่อ้างอิงไว้แล้ว |
nullValue |
CSV | สตริงที่แสดงค่า null |
ignoreLeadingWhiteSpace |
CSV | ว่าจะลบช่องว่างนําหน้าออกจากค่าหรือไม่ |
ignoreTrailingWhiteSpace |
CSV | ว่าจะลบช่องว่างท้ายออกจากค่าหรือไม่ |
multiLine |
CSV | ว่าค่าที่ใส่เครื่องหมายอัญประกาศสามารถครอบคลุมหลายบรรทัดได้หรือไม่ ค่าเริ่มต้นเป็นfalse |
dateFormat |
CSV | รูปแบบวันที่ Java ที่ใช้ในการแยกแยะค่าของวันที่ เช่น MM/dd/yyyy. |
timestampFormat |
CSV | รูปแบบ timestamp ของ Java ใช้ในการแยกวิเคราะห์ค่า timestamp |
encoding |
CSV | การเข้ารหัสอักขระ เช่น UTF-8, ISO-8859-1, , UTF-16หรือ Windows-1252. |
comment |
CSV | อักขระที่ทําเครื่องหมายบรรทัดเป็นคอมเมนต์เพื่อข้าม |
inferSchema |
CSV | จะอนุมานประเภทคอลัมน์หรือไม่ เมื่อ falseคอลัมน์จะถูกอ่านเป็นสตริง ใช้ FIXED โหมดสคีมาเมื่อปิดการอนุมาน |
columnNameOfCorruptRecord |
CSV | ชื่อคอลัมน์สตริงที่รับข้อความดิบสําหรับแถวที่ผิดรูป แถวที่ถูกต้องมีอยู่ใน NULL คอลัมน์นี้ รวมคอลัมน์นี้ใน AS SELECT ผลลัพธ์ |
Important
Fabric จัดการกับการจัดการแถวที่ผิดรูป อย่าตั้งค่าตัวเลือก Spark CSV mode
อ้างอิงคุณสมบัติ TBL
| ทรัพย์สิน | ค่า | คำอธิบาย |
|---|---|---|
schema_mode |
DYNAMIC (ค่าเริ่มต้น), FIXED |
DYNAMIC เพิ่มคอลัมน์ที่ค้นพบใหม่และเขียน NULL เมื่อไฟล์ไม่มีคอลัมน์ที่กําหนดไว้
FIXED ตรึงสคีมาไว้ที่การสร้างและปฏิเสธการลอยตัวที่ตามมา |
refresh_mode |
APPEND_ONLY, FULL, MIRROR |
สําหรับโฟลเดอร์ APPEND_ONLY จะเพิ่มแถวจากไฟล์ FULL ใหม่ ประมวลผลโฟลเดอร์ปัจจุบันเป็น snapshot MIRROR และสะท้อนการเพิ่มและลบไฟล์ ซอร์สไฟล์เดียวใช้ FULL ความหมายของการรีเจรช |
ตัวอย่าง
ตัวอย่างต่อไปนี้นําเข้าโฟลเดอร์ไฟล์ CSV ที่มีแถวหัวเรื่องเข้าสู่มุมมองบรอนซ์ แต่ละแถวจะได้รับ __filepath__ คอลัมน์ที่บันทึกไฟล์ต้นทางที่อ่านมา
CREATE MATERIALIZED LAKE VIEW bronze.raw_orders
USING OneLake_Files
OPTIONS (
'format' = 'csv',
'path' = 'abfss://SalesWorkspace@onelake.dfs.fabric.microsoft.com/SalesLake.Lakehouse/Files/orders/',
'header' = 'true'
)
TBLPROPERTIES (
'schema_mode' = 'DYNAMIC',
'refresh_mode' = 'APPEND_ONLY'
);
จากนั้นคุณสามารถสร้างวิวทะเลสาบที่สร้างขึ้นเป็นสีเงินและทองด้านล่าง โดยเลือกจาก bronze.raw_orders;Fabric จะบันทึกการพึ่งพาและรีเฟรชตามลําดับ หากต้องการติดตามไฟล์ผ่าน pipeline ดูที่ Manage Fabric materialized lake views lineage
กรอง แปลง และตรวจสอบไฟล์ระหว่างการนําเข้าข้อมูล
ใช้ FROM-less AS SELECT เพื่อเลือกคอลัมน์ กรองแถว แปลงค่า เพิ่มคอลัมน์ที่คํานวณได้ รวมข้อมูล หรือใช้ฟังก์ชันหน้าต่าง ข้อจํากัดการนําเข้าไฟล์จะทํางานกับผลลัพธ์ที่ฉาย ดังนั้นข้อจํากัดจึงสามารถอ้างอิงถึงนามแฝงที่คํานวณได้
ตัวอย่างต่อไปนี้จับแถวที่ผิดรูป ใช้กฎคุณภาพข้อมูลระดับแถว กรองอินพุต และแบ่งส่วนผลลัพธ์ที่เกิดขึ้นจริง:
CREATE MATERIALIZED LAKE VIEW silver.valid_orders
(
CONSTRAINT positive_amount
CHECK (order_amount > 0) ON MISMATCH DROP
)
USING OneLake_Files
OPTIONS (
'format' = 'csv',
'path' = 'abfss://SalesWorkspace@onelake.dfs.fabric.microsoft.com/SalesLake.Lakehouse/Files/orders/',
'header' = 'true',
'multiLine' = 'true',
'dateFormat' = 'MM/dd/yyyy',
'timestampFormat' = 'MM/dd/yyyy HH:mm:ss',
'encoding' = 'ISO-8859-1',
'comment' = '#',
'columnNameOfCorruptRecord' = '_corrupt_record'
)
PARTITIONED BY (region)
COMMENT "Valid orders ingested from CSV"
TBLPROPERTIES (
'schema_mode' = 'DYNAMIC',
'refresh_mode' = 'FULL'
)
AS SELECT
order_id,
region,
CAST(amount AS DECIMAL(18,2)) AS order_amount,
CASE WHEN amount >= 1000 THEN 'high' ELSE 'standard' END AS order_band,
_corrupt_record,
__filepath__,
current_timestamp() AS ingested_at;
ค้นหาแถวที่จับได้เพื่อการตรวจสอบหรือแก้ไข:
SELECT
_corrupt_record,
__filepath__,
ingested_at
FROM silver.valid_orders
WHERE _corrupt_record IS NOT NULL;
คุณยังสามารถสร้างผลลัพธ์แบบรวมหรือแบบหน้าต่างได้โดยตรงจากไฟล์:
CREATE MATERIALIZED LAKE VIEW gold.sales_by_region
USING OneLake_Files
OPTIONS (
'format' = 'parquet',
'path' = 'abfss://SalesWorkspace@onelake.dfs.fabric.microsoft.com/SalesLake.Lakehouse/Files/sales/'
)
TBLPROPERTIES ('schema_mode' = 'DYNAMIC', 'refresh_mode' = 'FULL')
AS SELECT
region,
COUNT(*) AS order_count,
SUM(amount) AS total_amount,
AVG(amount) AS average_amount
GROUP BY region
HAVING SUM(amount) > 0;
นิพจน์ที่รองรับได้แก่ ฟังก์ชันคํานวณมาตรฐานของ Spark SQL, ฟังก์ชันรวม, สถิติ, หน้าต่าง และการจัดอันดับ
นําเข้าไฟล์เดียว
ตั้งค่า path เป็นไฟล์ CSV หรือ Parquet แทนโฟลเดอร์ ซอร์สไฟล์เดียวจะใช้ FULL ความหมายของการรีเฟรช ดังนั้นการแทนที่ไฟล์จะแทนที่ผลลัพธ์ที่เกิดขึ้นจริง
CREATE MATERIALIZED LAKE VIEW bronze.monthly_snapshot
USING OneLake_Files
OPTIONS (
'format' = 'parquet',
'path' = 'abfss://SalesWorkspace@onelake.dfs.fabric.microsoft.com/SalesLake.Lakehouse/Files/snapshots/2026-08.parquet'
)
TBLPROPERTIES (
'schema_mode' = 'FIXED',
'refresh_mode' = 'FULL'
);
หมายเหตุ
เมื่อคุณใช้ FIXED schema และโฟลเดอร์ต้นทางมีไฟล์หลายไฟล์ที่มี schema ต่างกัน ในขณะเริ่มต้น CREATE, view จะล้มเหลวเพราะไม่สามารถกระทบ schema ที่แก้ไขได้เพียงชุดเดียว มุมมองจุดที่ FIXED ไฟล์ที่ใช้สคีมาเดียวกัน หรือใช้ DYNAMIC. นี่เป็นข้อจํากัดที่รู้จักกันดี คล้ายกับพฤติกรรมของสคีมาแบบคงที่ในการแปลงทางลัด
Important
เส้นทางต้นทางที่มีพื้นที่ดิบหรือไม่ %20 ได้รับการยอมรับในขณะนั้น คุณสามารถใช้ทางลัดโฟลเดอร์ OneLake เป็นแหล่งที่มา: การสร้างจะนําเข้าไฟล์ที่มีอยู่ที่ทางลัดรากและในโฟลเดอร์ซ้อน Managed refresh จะค้นหาไฟล์ใหม่ที่เพิ่มที่ root ทางลัด แต่จะไม่ค้นหาไฟล์ใหม่ที่เพิ่มในโฟลเดอร์ทางลัดซ้อนแบบวนซ้ํา
เคล็ดลับ
หากต้องการประมวลผลโฟลเดอร์ต้นทางทั้งหมดตามต้องการ ให้รัน REFRESH MATERIALIZED LAKE VIEW <name> FULL;. เช่นเดียวกับมุมมองแบบตาราง อย่าจัดการการรีเฟรชอย่างต่อเนื่องจากสมุดบันทึก — ใช้ Lineage และ Scheduled refresh เพื่อเก็บไฟล์ใหม่โดยอัตโนมัติ
ดูรายการวิวทะเลสาบที่เป็นรูปธรรม
หากต้องการรับรายการมุมมองทะเลสาบที่เป็นรูปธรรมทั้งหมดในสคีมา ให้ใช้ไวยากรณ์ต่อไปนี้
SHOW MATERIALIZED LAKE VIEWS <IN/FROM> Schema_Name;
ตัวอย่างเช่น เมื่อต้องการแสดงรายการมุมมองทะเลสาบที่เป็นรูปธรรมทั้งหมดใน silver Schema:
SHOW MATERIALIZED LAKE VIEWS IN silver;
ดึงคําสั่งที่สร้างมุมมองทะเลสาบที่เป็นรูปธรรม
หากต้องการรับ CREATE คําสั่งสําหรับมุมมองทะเลสาบที่เป็นรูปธรรม ให้ใช้ไวยากรณ์ต่อไปนี้:
SHOW CREATE MATERIALIZED LAKE VIEW MLV_Identifier;
ตัวอย่างเช่น เพื่อดึงคําจํากัดความของ products_with_sales:
SHOW CREATE MATERIALIZED LAKE VIEW products_with_sales;
อัปเดตมุมมองทะเลสาบที่เป็นรูปธรรม
หากต้องการแก้ไขคําจํากัดความของมุมมองทะเลสาบที่เป็นรูปธรรม (เช่น SELECT การสืบค้น ข้อจํากัด หรือการแบ่งพาร์ติชัน) ให้ใช้คําสั่ง CREATE OR REPLACE หรือคุณสามารถ ลบ มุมมองที่มีอยู่และสร้างใหม่ได้
เปลี่ยนชื่อมุมมองทะเลสาบที่เป็นรูปธรรม
หากต้องการเปลี่ยนชื่อมุมมองทะเลสาบที่เป็นรูปธรรมที่มีอยู่ ให้ใช้ ALTER MATERIALIZED LAKE VIEW คําสั่ง ไวยากรณ์คือ:
ALTER MATERIALIZED LAKE VIEW MLV_Identifier RENAME TO MLV_Identifier_New;
ตัวอย่างเช่น หากต้องการเปลี่ยนชื่อ products_with_sales:
ALTER MATERIALIZED LAKE VIEW products_with_sales RENAME TO products_with_sales_v2;
หมายเหตุ
คําสั่งนี้ ALTER MATERIALIZED LAKE VIEW รองรับเฉพาะการเปลี่ยนชื่อเท่านั้น หากต้องการแก้ไขข้อกําหนดหรือคุณสมบัติอื่นๆ (เช่น SELECT คิวรี ข้อจํากัด หรือการแบ่งพาร์ติชัน) โปรดดู อัปเดตมุมมองทะเลสาบที่เป็นรูปธรรม
ลบมุมมองทะเลสาบที่เป็นรูปธรรม
คุณสามารถลบมุมมองทะเลสาบที่เป็นรูปธรรมได้โดยใช้ตัวเลือก ลบ ในตัวสํารวจอ็อบเจ็กต์เลคเฮาส์ หรือโดยการเรียกใช้ DROP คําสั่ง ไวยากรณ์คือ:
DROP MATERIALIZED LAKE VIEW MLV_Identifier;
ตัวอย่างเช่น หากต้องการลบ products_with_sales:
DROP MATERIALIZED LAKE VIEW products_with_sales;
หมายเหตุ
การวางหรือเปลี่ยนชื่อมุมมองทะเลสาบที่เป็นรูปธรรมมีผลต่อมุมมองสายข้อมูลและการรีเฟรชตามกําหนดการ อย่าลืมอัปเดตการอ้างอิงในมุมมองทะเลสาบที่เป็นรูปธรรมขึ้นกันทั้งหมด
ข้อจํากัดปัจจุบัน
ข้อจํากัดต่อไปนี้ใช้กับคําสั่ง Spark SQL สําหรับมุมมองทะเลสาบที่เป็นรูปธรรม:
-
ชื่อ Schema — ไม่รองรับชื่อ Schema ตัวพิมพ์ใหญ่ทั้งหมด (เช่น
MYSCHEMA) ใช้ตัวพิมพ์แบบผสมหรือตัวพิมพ์เล็ก -
ไม่มีคําสั่งภาษาการจัดการข้อมูล (DML) — คุณไม่สามารถเรียกใช้
INSERTหรือUPDATEDELETEคําสั่งกับมุมมองทะเลสาบที่เป็นรูปธรรมได้ ข้อมูลจะถูกเติมข้อมูลโดยSELECTคิวรีในข้อกําหนดเท่านั้น -
ไม่มีคิวรีการเดินทางข้ามเวลา —
SELECTคิวรีในข้อกําหนดมุมมองทะเลสาบที่เป็นรูปธรรมไม่สามารถใช้ไวยากรณ์ การเดินทางข้ามเวลา ของเดลต้าเลคได้ (เช่นVERSION AS OFหรือTIMESTAMP AS OF) -
ไม่มีฟังก์ชันที่ผู้ใช้กําหนด — ฟังก์ชันที่ผู้ใช้กําหนดเอง (UDF) ไม่ได้รับการสนับสนุนใน
SELECTคิวรีที่กําหนดมุมมองทะเลสาบที่เป็นรูปธรรม -
ไม่มีมุมมองชั่วคราวเป็นแหล่งที่มา —
SELECTการสืบค้นสามารถอ้างอิงตารางและมุมมองทะเลสาบที่เป็นรูปธรรมอื่นๆ ได้ แต่ไม่ใช่มุมมองชั่วคราว -
คุณสมบัติ Spark ระดับเซสชัน — คุณสมบัติการกําหนดค่า Spark ที่ตั้งค่าที่ระดับเซสชัน (ตัวอย่างเช่น
spark.conf.set(...)) จะไม่ถูกนําไปใช้ระหว่างการรีเฟรชตามกําหนดการ ตั้งค่าคุณสมบัติที่ระดับเลคเฮาส์หรือพื้นที่ทํางานแทน -
การรับไฟล์ — มุมมองการรับข้อมูลรองรับเฉพาะ CSV และ Parquet เท่านั้น
FIXEDมุมมอง -schema จะล้มเหลวหากโฟลเดอร์ต้นทางเก็บไฟล์ที่มี schema ต่างกันขณะสร้าง เส้นทางต้นทางไม่สามารถมีช่องว่างได้ ทางลัดโฟลเดอร์ OneLake รองรับเป็นแหล่งข้อมูล แต่ managed refresh จะไม่ค้นหาไฟล์ที่เพิ่มภายใต้โฟลเดอร์ทางลัดซ้อนแบบวนซ้ํา