適用於:
Databricks SQL
可讓您執行下列任何動作:
- 新增排程或觸發程序,以重新整理現有的串流資料表。
- 變更串流資料表的現有重新整理排程或觸發程式。
- 捨棄串流資料表的重新整理排程或觸發程式。 如果沒有排程或觸發程序,則需要手動重新整理物件以反映最新資料。
若要在串流表上新增或修改留言,請使用 COMMENT ON。
注意
若以與定義 SQL 相矛盾的方式修改管線建立的資料集,可能會導致部分變更被還原。 請參閱 「使用 ALTER Lakeflow Spark 宣告式管線的指令」。
語法
ALTER STREAMING TABLE table_name
{
{ ADD | ALTER } schedule
DROP SCHEDULE |
ALTER COLUMN column_clause |
SET ROW FILTER clause |
DROP ROW FILTER |
SET TAGS clause |
UNSET TAGS clause |
}
schedule
{ SCHEDULE [ REFRESH ] schedule_clause |
TRIGGER ON UPDATE [ AT MOST EVERY trigger_interval ] }
schedule_clause
{ EVERY number { HOUR | HOURS | DAY | DAYS | WEEK | WEEKS } |
CRON cron_string [ AT TIME ZONE timezone_id ] }
column_clause
column_identifier
{ COMMENT clause |
SET MASK clause |
DROP MASK |
SET TAGS clause |
UNSET TAGS clause }
參數
-
要更改定義的串流數據表名稱。 名稱不得包含時態性規格。
附表
在表格上新增或變更
SCHEDULEorTRIGGER陳述式。注意
你無法用這個指令修改用 Lakeflow Spark Declarative Pipelines 建立的串流表的排程。 使用 管線編輯器。
SCHEDULE [ REFRESH ] schedule_clauseEVERY number { HOUR | HOURS | DAY | DAYS | WEEK | WEEKS }若要排定定期執行的更新,請使用
EVERY語法。 如果指定了EVERY語法,串流數據表或具現化視圖會根據所提供的值在指定的間隔內定期重新整理,例如HOUR、HOURS、DAY、DAYS、WEEK或WEEKS。 下表列出number接受的整數值。時間單位 整數值 HOUR or HOURS1 <= 高 <= 72 DAY or DAYS1 <= D <= 31 WEEK or WEEKS1 <= 寬 <= 8 注意
內含時間單位的單數和複數形式在語意上相等。
CRON cron_string [ AT TIME ZONE timezone_id ]使用 quartz cron 值來排程重新整理。 接受有效的 time_zone_values 。 不支援
AT TIME ZONE LOCAL。如果
AT TIME ZONE不存在,則會使用工作階段時區。 如果AT TIME ZONE不存在且未設定會話時區,則會擲回錯誤。SCHEDULE在語意上相當於SCHEDULE REFRESH。
TRIGGER ON UPDATE [ AT MOST EVERY trigger_interval ]這很重要
該
TRIGGER ON UPDATE功能處於 測試階段。將表格設定為在更新上游資料來源時重新整理,最多每分鐘重新整理一次。 設定值 ,
AT MOST EVERY以要求重新整理之間至少有最短時間。上游資料來源必須是外部或受控 Delta 資料表 (包括具體化檢視或串流資料表),或相依性僅限於支援資料表類型的受控檢視。
啟用 檔案事件 可以讓觸發程式更有效率,並增加觸發程式更新的一些限制。
是
trigger_interval至少 1 分鐘的 INTERVAL 陳述式。TRIGGER ON UPDATE有以下限制- 使用 TRIGGER ON UPDATE時,每個串流資料表的上游資料來源不超過 10 個。
- 最多可以使用 TRIGGER ON UPDATE指定 1000 個串流資料表或具體化檢視。
- 子
AT MOST EVERY句預設為 1 分鐘,且不能小於 1 分鐘。
DROP SCHEDULE從串流表中移除排程。
ALTER COLUMN clause參見 ALTER COLUMN 條款。
SETROW FILTER 條款這很重要
這項功能目前處於 公開預覽版。
將數據列篩選函式新增至串流數據表。 串流數據表的所有後續查詢都會接收資料列的子集,其中函式評估結果為布林值
TRUE。 這對於精細訪問控制用途很有用,其中函式可以檢查叫用使用者的身分識別或群組成員資格,以判斷是否要篩選特定數據列。建立後新增的列過濾器只會在下一次更新後傳入下游資料表。 對於連續管線,這需要重新啟動管線。
DROP ROW FILTER這很重要
這項功能目前處於 公開預覽版。
如果有的話,從串流數據表卸除數據列篩選。 未來的查詢會從數據表傳回所有數據列,而不需要任何自動篩選。
SET TAGS ( { tag_name = tag_value } [, ...] )這很重要
這項功能目前處於 公開預覽版。
將標籤套用至串流數據表。 您必須具有
APPLY TAG將標籤新增至串流數據表的許可權。tag_name字面意義的
STRING。 它tag_name必須在串流表中唯一的。tag_value字面意義的
STRING。
UNSET TAGS ( tag_name [, ...] )這很重要
這項功能目前處於 公開預覽版。
從串流數據表中移除標籤。 您必須具有
APPLY TAG從串流數據表中移除標籤的許可權。tag_name字面意義的
STRING。 它tag_name必須在串流表中唯一的。
ALTER COLUMN 條款
這很重要
這項功能目前處於 公開預覽版。
變更屬性或欄的位置。
語法
ALTER COLUMN
column_identifier
{ COMMENT comment |
SET MASK mask_clause |
DROP MASK |
SET TAGS clause |
UNSET TAGS clause }
參數
-
要改變的欄位名稱。
COMMENT comment變更
column_name欄的描述。comment必須是STRING文字表達式。SETMASK 子句新增數據行遮罩函式來匿名敏感數據。 該欄的所有後續查詢都會接收到評估該函式於該欄上的結果,取代欄的原始值。 這對於細緻的存取控制很有用,功能可以檢查叫用使用者的身分識別或群組成員資格,以判斷是否要刪減值。
建立後新增的欄位遮罩只會在下一次更新後傳入下游資料表。 對於連續管線,這需要重新啟動管線。
DROP MASK如果存在,請移除此欄的遮罩。 此數據行的未來查詢將會收到數據行的原始值。
SET TAGS ( { tag_name = tag_value } [, ...] )將標籤套用至欄位。 您必須有
APPLY TAG許可權,才能將標籤新增至數據行。tag_name
字面意義的
STRING。tag_name在資料表或資料行內必須是唯一的。tag_value
字面意義的
STRING。
UNSET TAGS ( tag_name [, ...] )將欄位中給定的標籤移除。 您需要有
APPLY TAG許可權,才能從數據行中移除標籤。tag_name
字面意義的
STRING。tag_name在資料表或資料行內必須是唯一的。
範例
-- Adds a schedule to refresh the streaming table whenever its upstream data gets updated.
> ALTER STREAMING TABLE my_st
ADD TRIGGER ON UPDATE;
-- Alters the schedule to refresh the streaming table when its upstream data
-- gets updated, with no more than one update per hour.
> ALTER STREAMING TABLE my_st
ALTER TRIGGER ON UPDATE AT MOST EVERY INTERVAL 1 hour;
-- Alters the schedule to run every one hour.
> ALTER STREAMING TABLE my_st
ALTER SCHEDULE EVERY 1 HOUR;
-- Alters the schedule to refresh the streaming table once a day
-- at midnight in Los Angeles
> ALTER STREAMING TABLE my_st
ALTER SCHEDULE CRON '0 0 0 * * ? *' AT TIME ZONE 'America/Los_Angeles';
-- Drops the schedule for a streaming table
> ALTER STREAMING TABLE my_st
DROP SCHEDULE;
-- Adds a column comment
> ALTER STREAMING TABLE my_st
ALTER COLUMN column_name COMMENT 'test'