إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على:
Databricks SQL
Databricks Runtime
إرجاع سجل التغييرات إلى جدول Delta Lake مع تمكين Change Data Feed.
لاستدعاء هذه الدالة، يجب أن يكون لديك واحد على الأقل مما يلي:
SELECTامتياز على الجدول المحدد- أن تكون مالك الجدول
- الحصول على امتيازات إدارية
بناء الجملة
table_changes ( table_str, start [, end ] )
الوسيطات
table_str: قيمة سلسلة حرفية تمثل الاسم المؤهل اختياريا للجدول.start: قيمة حرفية ل BIGINT أو TIMESTAMP، تمثل الإصدار الأول أو الطابع الزمني للتغيير المطلوب إرجاعه.end: قيمة حرفية اختيارية ل BIGINT أو TIMESTAMP، تمثل الإصدار الأخير أو الطابع الزمني للتغيير المطلوب إرجاعه. إذا لم يتم تحديد كافة التغييرات منstartلأعلى إلى التغيير الحالي يتم إرجاعها.
المرتجعات
جدول يتضمن كافة أعمدة الجدول المحددة في table_str، بالإضافة إلى الأعمدة التالية:
_change_type STRING NOT NULLتحديد التغيير:
deleteأوinsertأوupdate_preimageأوupdate_postimage_commit_version BIGINT NOT NULLتحديد إصدار التثبيت للجدول المقترن بالتغيير.
_commit_timestamp TIMESTAMP NOT NULLتحديد الطابع الزمني للالتزام المقترن بالتغيير.
إذا table_str لم يكن يمثل اسم جدول مؤهل، فإن الاسم مؤهل بقيمة current_schema.
إذا كان اسم الجدول يحتوي على مسافات أو نقاط، فاستخدم علامات الاقتباس الخلفية داخل السلسلة لعرض هذا الجزء من الاسم.
الأمثلة
-- Create a Delta table with Change Data Feed;
> CREATE TABLE myschema.t(c1 INT, c2 STRING) TBLPROPERTIES(delta.enableChangeDataFeed=true);
-- Modify the table
> INSERT INTO myschema.t VALUES (1, 'Hello'), (2, 'World');
> INSERT INTO myschema.t VALUES (3, '!');
> UPDATE myschema.t SET c2 = upper(c2) WHERE c1 < 3;
> DELETE FROM myschema.t WHERE c1 = 3;
-- Show the history of table change events
> DESCRIBE HISTORY myschema.t;
version timestamp userId userName operation operationParameters ...
4 2022-09-01T18:32:35.000+0000 6167625779053302 alf@melmak.et DELETE {"predicate":"[\"(spark_catalog.myschema.t.c1 = 3)\"]"}
3 2022-09-01T18:32:32.000+0000 6167625779053302 alf@melmak.et UPDATE {"predicate":"(c1#3195878 < 3)"}
2 2022-09-01T18:32:28.000+0000 6167625779053302 alf@melmak.et WRITE {"mode":"Append","partitionBy":"[]"}
1 2022-09-01T18:32:26.000+0000 6167625779053302 alf@melmak.et WRITE {"mode":"Append","partitionBy":"[]"}
0 2022-09-01T18:32:23.000+0000 6167625779053302 alf@melmak.et CREATE TABLE {"isManaged":"true","description":null,"partitionBy":"[]","properties":"{\"delta.enableChangeDataFeed\":\"true\"}"}
-- Show the change table feed using a the commit timestamp retrieved from the history.
> SELECT * FROM table_changes('`myschema`.`t`', 2);
c1 c2 _change_type _commit_version _commit_timestamp
3 ! insert 2 2022-09-01T18:32:28.000+0000
2 WORLD update_postimage 3 2022-09-01T18:32:32.000+0000
2 World update_preimage 3 2022-09-01T18:32:32.000+0000
1 Hello update_preimage 3 2022-09-01T18:32:32.000+0000
1 HELLO update_postimage 3 2022-09-01T18:32:32.000+0000
3 ! delete 4 2022-09-01T18:32:35.000+0000
-- Show the ame change table feed using a point in time.
> SELECT * FROM table_changes('`myschema`.`t`', '2022-09-01T18:32:27.000+0000') ORDER BY _commit_version;
c1 c2 _change_type _commit_version _commit_timestamp
3 ! insert 2 2022-09-01T18:32:28.000+0000
2 WORLD update_postimage 3 2022-09-01T18:32:32.000+0000
2 World update_preimage 3 2022-09-01T18:32:32.000+0000
1 Hello update_preimage 3 2022-09-01T18:32:32.000+0000
1 HELLO update_postimage 3 2022-09-01T18:32:32.000+0000
3 ! delete 4 2022-09-01T18:32:35.000+0000