Pointblank يتبع نهجًا مختلفًا لجودة البيانات. لا يجب أن تكون مهمة تقنية مملة. بل بالعكس، يمكن أن تصبح عملية تركز على التواصل الواضح بين أعضاء الفريق. بينما تركز مكتبات التحقق الأخرى على اكتشاف الأخطاء فقط، يتفوق Pointblank في العثور على المشاكل ومشاركة الرؤى. تقاريرنا الجميلة والقابلة للتخصيص تحول نتائج التحقق إلى محادثات مع أصحاب المصلحة، مما يجعل مشاكل جودة البيانات مفهومة وقابلة للتنفيذ على الفور لجميع فريقك.
ابدأ في دقائق، وليس ساعات. تحلل خاصية DraftValidation المدعومة بالذكاء الاصطناعي في Pointblank بياناتك وتقترح قواعد تحقق ذكية تلقائيًا. لذا لا حاجة للتحديق في سيناريو تحقق فارغ والتساؤل عن مكان البدء. يمكن لـ Pointblank بدء رحلة جودة بياناتك حتى يمكنك التركيز على ما يهم أكثر.
سواء كنت عالم بيانات يحتاج إلى إيصال نتائج جودة البيانات بسرعة، أو مهندس بيانات يبني خطوط أنابيب قوية، أو محلل يقدم نتائج جودة البيانات لأصحاب المصلحة التجاريين، يساعدك Pointblank في تحويل جودة البيانات من فكرة لاحقة إلى ميزة تنافسية.
تستخدم فئة DraftValidation نماذج اللغة الكبيرة لتحليل بياناتك وإنشاء خطة تحقق كاملة مع اقتراحات ذكية. هذا يساعدك على البدء بسرعة في تحقق البيانات أو إطلاق مشروع جديد.
import pointblank as pb
# قم بتحميل بياناتك
data = pb.load_dataset("game_revenue") # مجموعة بيانات عينة
# استخدم DraftValidation لإنشاء خطة تحقق
pb.DraftValidation(data=data, model="anthropic:claude-opus-4-6")الناتج هو خطة تحقق كاملة مع اقتراحات ذكية مبنية على بياناتك:
import pointblank as pb
# خطة التحقق
validation = (
pb.Validate(
data=data,
label="Draft Validation",
thresholds=pb.Thresholds(warning=0.10, error=0.25, critical=0.35)
)
.col_vals_in_set(columns="item_type", set=["iap", "ad"])
.col_vals_gt(columns="item_revenue", value=0)
.col_vals_between(columns="session_duration", left=3.2, right=41.0)
.col_count_match(count=11)
.row_count_match(count=2000)
.rows_distinct()
.interrogate()
)
validationانسخ والصق وخصص خطة التحقق المنشأة حسب احتياجاتك.
تجعل واجهة برمجة التطبيقات القابلة للسلسلة في Pointblank التحقق بسيطًا وقابلاً للقراءة. ينطبق نفس النمط دائمًا: (1) ابدأ بـ Validate، (2) أضف خطوات التحقق، و(3) انته بـ interrogate().
import pointblank as pb
validation = (
pb.Validate(data=pb.load_dataset(dataset="small_table"))
.col_vals_gt(columns="d", value=100) # التحقق من القيم > 100
.col_vals_le(columns="c", value=5) # التحقق من القيم <= 5
.col_exists(columns=["date", "date_time"]) # التحقق من وجود الأعمدة
.interrogate() # تنفيذ وجمع النتائج
)
# احصل على تقرير التحقق من REPL مع:
validation.get_tabular_report().show()
# من دفتر الملاحظات ببساطة استخدم:
validationبمجرد حصولك على كائن validation مستجوب، يمكنك استغلال مجموعة متنوعة من الطرق لاستخراج الرؤى مثل:
- الحصول على تقارير مفصلة لخطوات فردية لمعرفة ما الذي حدث خطأ
- تصفية الجداول بناءً على نتائج التحقق
- استخراج بيانات مشكلة للتنقيح
- يعمل مع بنيتك الحالية: يتكامل بسلاسة مع Polars وPandas وDuckDB وMySQL وPostgreSQL وSQLite وParquet وPySpark وSnowflake والمزيد!
- تقارير جميلة وتفاعلية: نتائج تحقق واضحة تسلط الضوء على المشكلات وتساعد على توصيل جودة البيانات
- سلسلة تحقق قابلة للتركيب: سلسلة خطوات التحقق في سير عمل كامل لجودة البيانات
- تنبيهات قائمة على العتبات: تعيين عتبات 'تحذير' و'خطأ' و'حرج' مع إجراءات مخصصة
- مخرجات عملية: استخدم نتائج التحقق لتصفية الجداول أو استخراج البيانات المشكلة أو تشغيل العمليات اللاحقة
import pointblank as pb
import polars as pl
# تحميل البيانات
sales_data = pl.read_csv("sales_data.csv")
# إنشاء تحقق شامل
validation = (
pb.Validate(
data=sales_data,
tbl_name="sales_data", # اسم الجدول للتقرير
label="مثال العالم الحقيقي.", # تسمية للتحقق، تظهر في التقارير
thresholds=(0.01, 0.02, 0.05), # تعيين عتبات للتحذيرات والأخطاء والمشكلات الحرجة
actions=pb.Actions( # تحديد الإجراءات لأي تجاوز للعتبة
critical="تم العثور على مشكلة كبيرة في جودة البيانات في الخطوة {step} ({time})."
),
final_actions=pb.FinalActions( # تحديد الإجراءات النهائية للتحقق بأكمله
pb.send_slack_notification(
webhook_url="https://hooks.slack.com/services/your/webhook/url"
)
),
brief=True, # إضافة ملخصات مولدة تلقائيًا لكل خطوة
)
.col_vals_between( # التحقق من النطاقات الرقمية بدقة
columns=["price", "quantity"],
left=0, right=1000
)
.col_vals_not_null( # ضمان أن الأعمدة التي تنتهي بـ '_id' لا تحتوي على قيم فارغة
columns=pb.ends_with("_id")
)
.col_vals_regex( # التحقق من الأنماط باستخدام التعبيرات النمطية
columns="email",
pattern="^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"
)
.col_vals_in_set( # التحقق من القيم التصنيفية
columns="status",
set=["pending", "shipped", "delivered", "returned"]
)
.conjointly( # دمج شروط متعددة
lambda df: pb.expr_col("revenue") == pb.expr_col("price") * pb.expr_col("quantity"),
lambda df: pb.expr_col("tax") >= pb.expr_col("revenue") * 0.05
)
.interrogate()
)تم العثور على مشكلة كبيرة في جودة البيانات في الخطوة 7 (2025-04-16 15:03:04.685612+00:00).
# احصل على تقرير HTML يمكنك مشاركته مع فريقك
validation.get_tabular_report().show("browser")# احصل على تقرير عن السجلات الفاشلة من خطوة محددة
validation.get_step_report(i=3).show("browser") # الحصول على السجلات الفاشلة من الخطوة 3هل تحتاج إلى بيانات اختبار لسير عمل التحقق الخاص بك؟ تنشئ وظيفة generate_dataset() بيانات اصطناعية واقعية ومدركة للغة المحلية بناءً على تعريفات المخطط. مفيدة جدًا لتطوير خطوط الأنابيب بدون بيانات الإنتاج، أو تشغيل اختبارات CI/CD بسيناريوهات قابلة للتكرار، أو إنشاء نماذج أولية لسير العمل قبل توفر بيانات الإنتاج.
import pointblank as pb
# تعريف مخطط مع قيود الحقول
schema = pb.Schema(
user_id=pb.int_field(min_val=1, unique=True),
name=pb.string_field(preset="name"),
email=pb.string_field(preset="email"),
age=pb.int_field(min_val=18, max_val=100),
status=pb.string_field(allowed=["active", "pending", "inactive"]),
)
# إنشاء 10 صفوف من بيانات الاختبار الواقعية
data = pb.generate_dataset(schema, n=10, seed=23)
pb.preview(data)يدعم المولد إنشاء بيانات متطورة بهذه القدرات:
- بيانات واقعية مع قوالب مسبقة: استخدم قوالب مدمجة مثل
"name"،"email"،"address"،"phone"، إلخ. - سلاسل وكيل المستخدم: إنشاء سلاسل وكيل مستخدم متصفح متنوعة وواقعية للغاية من 17 فئة متصفح بأكثر من 42,000 توليفة فريدة
- دعم 100 دولة: إنشاء بيانات خاصة بالمنطقة (مثل
country="DE"للعناوين الألمانية) - قيود الحقول: التحكم في النطاقات والأنماط والتفرد والقيم المسموح بها
- تنسيقات إخراج متعددة: يُرجع Polars DataFrame افتراضيًا، ولكنه يدعم أيضًا Pandas (
output="pandas") أو القواميس (output="dict")
- سير عمل تحقق كامل: من الوصول إلى البيانات إلى التحقق إلى إعداد التقارير في خط أنابيب واحد
- مبني للتعاون: مشاركة النتائج مع الزملاء من خلال تقارير تفاعلية جميلة
- مخرجات عملية: احصل بالضبط على ما تحتاجه: عدد، مقتطفات، ملخصات، أو تقارير كاملة
- نشر مرن: استخدم في دفاتر الملاحظات أو النصوص البرمجية أو خطوط أنابيب البيانات
- توليد بيانات اصطناعية: إنشاء بيانات اختبار واقعية مع أكثر من 30 قالب مسبق، سلاسل وكيل المستخدم، تنسيق متوافق مع المنطقة، ودعم 100 دولة
- قابل للتخصيص: تخصيص خطوات التحقق وإعداد التقارير وفقًا لاحتياجاتك المحددة
- تدويل: يمكن إنشاء التقارير بـ 40 لغة، بما في ذلك الإنجليزية والإسبانية والفرنسية والألمانية
للفرق التي تحتاج إلى سير عمل تحقق محمول ومتحكم في الإصدار، يدعم Pointblank ملفات تكوين YAML. هذا يجعل من السهل مشاركة منطق التحقق عبر بيئات مختلفة وأعضاء الفريق، مما يضمن أن الجميع على نفس الصفحة.
validation.yaml
validate:
data: small_table
tbl_name: "small_table"
label: "تحقق البدء"
steps:
- col_vals_gt:
columns: "d"
value: 100
- col_vals_le:
columns: "c"
value: 5
- col_exists:
columns: ["date", "date_time"]تنفيذ تحقق YAML
import pointblank as pb
# تشغيل التحقق من تكوين YAML
validation = pb.yaml_interrogate("validation.yaml")
# احصل على النتائج تماماً مثل أي تحقق آخر
validation.get_tabular_report().show()هذا النهج مثالي لـ:
- خطوط أنابيب CI/CD: تخزين قواعد التحقق جنباً إلى جنب مع الكود الخاص بك
- تعاون الفريق: مشاركة منطق التحقق في تنسيق قابل للقراءة
- اتساق البيئة: استخدام نفس التحقق عبر التطوير والمرحلة والإنتاج
- التوثيق: ملفات YAML تعمل كتوثيق حي لمتطلبات جودة البيانات
يتضمن Pointblank أداة CLI قوية تسمى pb تتيح لك تشغيل سير عمل التحقق من البيانات مباشرة من سطر الأوامر. مثالية لخطوط أنابيب CI/CD، وفحوصات جودة البيانات المجدولة، أو مهام التحقق السريعة.
استكشف بياناتك
# احصل على معاينة سريعة لبياناتك
pb preview small_table
# معاينة البيانات من عناوين GitHub
pb preview "https://github.com/user/repo/blob/main/data.csv"
# تحقق من القيم المفقودة في ملفات Parquet
pb missing data.parquet
# إنشاء ملخصات الأعمدة من اتصالات قاعدة البيانات
pb scan "duckdb:///data/sales.ddb::customers"تشغيل التحققات الأساسية
# تشغيل التحقق من ملف تكوين YAML
pb run validation.yaml
# تشغيل التحقق من ملف Python
pb run validation.py
# تحقق من الصفوف المكررة
pb validate small_table --check rows-distinct
# تحقق من البيانات مباشرة من GitHub
pb validate "https://github.com/user/repo/blob/main/sales.csv" --check col-vals-not-null --column customer_id
# تحقق من عدم وجود قيم فارغة في مجموعات بيانات Parquet
pb validate "data/*.parquet" --check col-vals-not-null --column a
# استخراج البيانات الفاشلة للتصحيح
pb validate small_table --check col-vals-gt --column a --value 5 --show-extractالتكامل مع CI/CD
# استخدم أكواد الخروج للأتمتة في تحققات البناء الواحد (0 = نجح، 1 = فشل)
pb validate small_table --check rows-distinct --exit-code
# تشغيل سير عمل التحقق مع أكواد الخروج
pb run validation.yaml --exit-code
pb run validation.py --exit-codeقم بزيارة موقع التوثيق للحصول على:
نحن نحب أن نسمع منك! تواصل معنا:
- مشكلات GitHub لتقارير الأخطاء وطلبات الميزات
- خادم Discord للمناقشات والمساعدة
- إرشادات المساهمة إذا كنت ترغب في المساعدة في تحسين Pointblank
يمكنك تثبيت Pointblank باستخدام pip:
pip install pointblankيمكنك أيضًا تثبيت Pointblank من Conda-Forge باستخدام:
conda install conda-forge::pointblankإذا لم يكن لديك Polars أو Pandas مثبتين، فستحتاج إلى تثبيت أحدهما لاستخدام Pointblank.
pip install "pointblank[pl]" # تثبيت Pointblank مع Polars
pip install "pointblank[pd]" # تثبيت Pointblank مع Pandasلاستخدام Pointblank مع DuckDB أو MySQL أو PostgreSQL أو SQLite، قم بتثبيت Ibis مع الواجهة الخلفية المناسبة:
pip install "pointblank[duckdb]" # تثبيت Pointblank مع Ibis + DuckDB
pip install "pointblank[mysql]" # تثبيت Pointblank مع Ibis + MySQL
pip install "pointblank[postgres]" # تثبيت Pointblank مع Ibis + PostgreSQL
pip install "pointblank[sqlite]" # تثبيت Pointblank مع Ibis + SQLiteيستخدم Pointblank Narwhals للعمل مع Polars وPandas DataFrames، ويتكامل مع Ibis لدعم قواعد البيانات وتنسيقات الملفات. توفر هذه البنية واجهة برمجة متسقة للتحقق من البيانات الجدولية من مصادر مختلفة.
هناك العديد من الطرق للمساهمة في التطوير المستمر لـ Pointblank. بعض المساهمات يمكن أن تكون بسيطة (مثل تصحيح الأخطاء المطبعية، تحسين التوثيق، تقديم طلبات للميزات أو المشاكل، إلخ) وأخرى قد تتطلب المزيد من الوقت والاهتمام (مثل الإجابة على الأسئلة وتقديم طلبات السحب مع تغييرات الكود). فقط اعلم أن أي شيء يمكنك القيام به للمساعدة سيكون محل تقدير كبير!
يرجى قراءة إرشادات المساهمة للحصول على معلومات حول كيفية البدء.
نحن نعمل بنشاط على تعزيز Pointblank بـ:
- طرق تحقق إضافية لفحوصات جودة البيانات الشاملة
- قدرات متقدمة لتسجيل السجلات
- إجراءات المراسلة (Slack، البريد الإلكتروني) لتجاوزات العتبة
- اقتراحات التحقق المدعومة بنماذج اللغة الكبيرة وإنشاء قاموس البيانات
- تكوين JSON/YAML لقابلية نقل خط الأنابيب
- أداة واجهة سطر الأوامر للتحقق من سطر الأوامر
- توسيع دعم الواجهة الخلفية والشهادة
- توثيق وأمثلة عالية الجودة
إذا كان لديك أي أفكار للميزات أو التحسينات، فلا تتردد في مشاركتها معنا! نحن دائمًا نبحث عن طرق لجعل Pointblank أفضل.
يرجى ملاحظة أن مشروع Pointblank يتم إصداره مع مدونة قواعد سلوك للمساهمين.
من خلال المشاركة في هذا المشروع فإنك توافق على الالتزام بشروطه.
Pointblank مرخص بموجب ترخيص MIT.
© Posit Software, PBC.
هذا المشروع يتم صيانته بشكل أساسي من قبل Rich Iannone. قد يساعد مؤلفون آخرون أحيانًا في بعض هذه المهام.





