دوال للتعامل مع UUIDs
توليد UUIDv7
unix_ts_ms)، يبدأ العدّاد بقيمة عشوائية ويزداد بمقدار 1 لكل UUID جديد إلى أن يتغيّر الطابع الزمني. وفي حال تجاوز سعة العدّاد، يُزاد حقل الطابع الزمني بمقدار 1 ويُعاد ضبط العدّاد إلى قيمة بداية عشوائية جديدة.
تضمن دوال توليد UUID أن حقل العدّاد داخل الطابع الزمني يزداد اطرادًا عبر جميع استدعاءات الدوال في الخيوط والاستعلامات التي تعمل بالتوازي.
إنشاء Snowflake ID
unix_ts_ms)، يبدأ العدّاد من 0 ويزداد بمقدار 1 مع كل Snowflake ID جديد إلى أن يتغيّر الطابع الزمني. وفي حال تجاوز سعة العدّاد، تُزاد خانة الطابع الزمني بمقدار 1 ويُعاد ضبط العدّاد إلى 0.
تستند معرّفات Snowflake المُنشأة إلى حقبة UNIX التي تبدأ في 1970-01-01. ومع أنه لا يوجد معيار أو توصية تحدد حقبة معرّفات Snowflake، فقد تستخدم التطبيقات في أنظمة أخرى حقبة مختلفة، مثل Twitter/X (2010-11-04) أو Mastodon (2015-01-01).
UUIDNumToString
variant (ويكون Big-endian افتراضيًا)، ويُرجع سلسلة نصية تتكوّن من 36 حرفًا بتنسيق نصي.
البنية
binary— التمثيل الثنائي لـ UUID.FixedString(16)variant— المتغيّر كما هو محدد في RFC4122. 1 =Big-endian(الافتراضي)، 2 =Microsoft.(U)Int*
String
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
UUIDStringToNum
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx، وتُرجع FixedString(16) كتمثيلها الثنائي، مع إمكانية تحديد التنسيق اختياريًا باستخدام variant (Big-endian افتراضيًا).
البنية
string— سلسلة نصية أو سلسلة ثابتة بطول 36 حرفًاStringأوFixedString(36)variant— قيمة المتغيّر كما هي محددة في RFC4122. 1 =Big-endian(الافتراضي)، 2 =Microsoft.(U)Int*
string. FixedString(16)
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
UUIDToNum
variant (ويكون Big-endian افتراضيًا).
تستبدل هذه الدالة استدعاءات دالتين منفصلتين هما UUIDStringToNum(toString(uuid))، لذلك لا حاجة إلى أي تحويل وسيط من UUID إلى سلسلة لاستخراج البايتات من UUID.
الصياغة
uuid— UUID.StringأوFixedStringvariant— قيمة المتغيّر كما هي محددة في RFC4122. 1 =Big-endian(الافتراضي)، 2 =Microsoft.(U)Int*
FixedString(16)
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
UUIDv7ToDateTime
uuid— UUID الإصدار 7.Stringtimezone— اختياري. اسم المنطقة الزمنية للقيمة المُعادة.String
1970-01-01 00:00:00.000. DateTime64(3)
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
dateTime64ToSnowflake
value— تاريخ يتضمن وقتًا.DateTime64
Int64
أمثلة
مثال على الاستخدام
Query
Response
dateTime64ToSnowflakeID
value— تاريخ ووقت.DateTime64epoch— حقبة معرّف Snowflake بالمللي ثانية منذ 1970-01-01. القيمة الافتراضية هي 0 (1970-01-01). وبالنسبة إلى حقبة Twitter/X (2015-01-01)، أدخِل 1288834974657.UInt*
UInt64
أمثلة
بسيط
Query
Response
dateTimeToSnowflake
value— تاريخ ووقت.DateTime
Int64
أمثلة
مثال على الاستخدام
Query
Response
dateTimeToSnowflakeID
value— تاريخ ووقت.DateTimeepoch— حقبة لمعرّف Snowflake، بالمللي ثانية منذ 1970-01-01. القيمة الافتراضية هي 0 (1970-01-01). بالنسبة إلى حقبة Twitter/X (2015-01-01)، استخدم 1288834974657.UInt*
UInt64
أمثلة
بسيط
Query
Response
dateTimeToUUIDv7
اعتبارًا من سبتمبر 2025، لا تزال معرّفات UUID من الإصدار 7 في حالة مسودة، وقد تتغير بنيتها في المستقبل.
value— تاريخ ووقت.DateTime
UUID
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
generateSnowflakeID
generateSnowflakeID أن يزداد حقل العداد داخل الطابع الزمني زيادةً رتيبة عبر جميع استدعاءات الدالة في الخيوط والاستعلامات التي تعمل بالتوازي.
راجع قسم “توليد معرّف Snowflake” للاطلاع على تفاصيل التنفيذ.
الصياغة
expr— تعبير عشوائي يُستخدم لتجاوز حذف التعبيرات الفرعية المشتركة إذا جرى استدعاء الدالة عدة مرات ضمن استعلام. لا تؤثر قيمة التعبير على معرّف Snowflake المُعاد. اختياري. -machine_id— معرّف جهاز، وتُستخدم أقل 10 بتات منه. Int64. اختياري.
UInt64
أمثلة
مثال استخدام
Query
Response
Query
Response
Query
Response
generateUUIDv4
expr— اختياري. أي تعبير يُستخدم لتجاوز حذف التعبيرات الفرعية المشتركة عند استدعاء الدالة عدة مرات في استعلام. لا تؤثر قيمة هذا التعبير في UUID المُعاد.
UUID
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
generateUUIDv7
اعتبارًا من سبتمبر 2025، لا تزال معرّفات UUID من الإصدار 7 في حالة مسودة، وقد تتغير بنيتها في المستقبل.
expr— اختياري. تعبير اعتباطي يُستخدم لتجاوز حذف التعبيرات الفرعية المشتركة إذا جرى استدعاء الدالة عدة مرات في استعلام. لا تؤثر قيمة هذا التعبير في UUID المُعاد.Any
UUID
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
snowflakeIDToDateTime
value— معرّف Snowflake.UInt64epoch— اختياري. حقبة معرّف Snowflake بالمللي ثانية منذ 1970-01-01. القيمة الافتراضية هي 0 (1970-01-01). لحقبة Twitter/X (2015-01-01)، مرّر 1288834974657.UInt*time_zone— اختياري. المنطقة الزمنية. تحلّل الدالةtime_stringوفقًا للمنطقة الزمنية.String
value. DateTime
أمثلة
مثال على الاستخدام
Query
Response
snowflakeIDToDateTime64
value— معرّف Snowflake.UInt64epoch— اختياري. حقبة معرّف Snowflake، بالمللي ثانية منذ 1970-01-01. القيمة الافتراضية هي 0 (1970-01-01). بالنسبة إلى حقبة Twitter/X (2015-01-01)، أدخِل 1288834974657.UInt*time_zone— اختياري. المنطقة الزمنية. تُحلِّل الدالةtime_stringوفقًا للمنطقة الزمنية.String
value على هيئة DateTime64 مع scale = 3، أي بدقة المللي ثانية. DateTime64
أمثلة
مثال على الاستخدام
Query
Response
snowflakeToDateTime
value— معرّف Snowflake.Int64time_zone— اختياري. المنطقة الزمنية. تفسّر الدالةtime_stringوفقًا للمنطقة الزمنية.String
value. DateTime
أمثلة
مثال على الاستخدام
Query
Response
snowflakeToDateTime64
value— معرّف Snowflake.Int64time_zone— اختياري. المنطقة الزمنية. تُحلِّل الدالةtime_stringوفقًا للمنطقة الزمنية.String
value. DateTime64(3)
أمثلة
مثال على الاستخدام
Query
Response
toUUIDOrDefault
string— سلسلة نصية مكوّنة من 36 حرفًا أو FixedString(36) لتحويلها إلى UUID. -default— قيمة UUID التي ستُعاد إذا تعذّر تحويل الوسيط الأول إلى النوع UUID.
UUID
أمثلة
يعيد التحويل الناجح قيمة UUID المُحلَّلة
Query
Response
Query
Response
toUUIDOrNull
UUID، لكنها تُرجع NULL في حال حدوث خطأ.
تشبه toUUID، لكنها تُرجع NULL بدلًا من إطلاق استثناء عند حدوث أخطاء في التحويل.
الوسيطات المدعومة:
- التمثيلات النصية لـ UUID بالتنسيق القياسي (8-4-4-4-12 رقمًا سداسيّ عشري).
- التمثيلات النصية لـ UUID من دون واصلات (32 رقمًا سداسيّ عشري).
NULL):
- تنسيقات سلاسل غير صالحة.
- أنواع غير نصية.
- UUIDs غير مكتملة التكوين.
x— تمثيل نصي لقيمة UUID.String
NULL. UUID أو NULL
أمثلة
أمثلة الاستخدام
Query
Response