Bối cảnh xác thực dữ liệu năm 2025
(aeturrell.com)- Giải thích về các công cụ xác thực dữ liệu chủ chốt ở thời điểm hiện tại (2025) và khuyến nghị theo từng tình huống
- Xác thực dữ liệu (kiểm tra tính hợp lệ) là quá trình kiểm tra chất lượng dữ liệu một cách tự động hoặc bán tự động
- Kiểm tra kiểu dữ liệu, đếm số giá trị thiếu, phát hiện giá trị bất thường
- Có thể xác thực không chỉ các hàng trong dataframe mà cả giá trị đầu vào API hoặc giá trị gửi từ biểu mẫu
- Người dùng có thể đặt các quy tắc như giá trị của một cột cụ thể phải nằm trong một khoảng nhất định
- Khi xác thực thất bại: có thể phát sinh lỗi, tạo báo cáo xác thực rồi xử lý thủ công hoặc tự động
Vì sao xác thực dữ liệu quan trọng
- Công việc phân tích của cơ quan công quyền được chia thành hai loại sau:
- Phân tích ad hoc – công việc phân tích một lần
- Tạo thống kê định kỳ – thu thập và xử lý dữ liệu mới theo chu kỳ
- Cần xác thực trước khi lỗi dữ liệu ảnh hưởng đến kết quả phân tích
- Xác thực dữ liệu có hiệu quả trong việc giảm rủi ro lỗi và nâng cao độ chính xác
Các công cụ xác thực dữ liệu chính
1. Great Expectations
-
Công cụ xác thực dữ liệu mạnh mẽ ở cấp độ production
-
Có gói mã nguồn mở và cũng cung cấp dịch vụ cloud trả phí
-
Cung cấp các tính năng nâng cao:
- Có thể tự động hóa như gửi tin nhắn Slack khi xác thực thất bại
-
Cấu hình phức tạp và thường đòi hỏi kỹ năng khoa học dữ liệu
-
Mã ví dụ:
import great_expectations as gx import pandas as pd context = gx.get_context() df = pd.read_csv("https://raw.githubusercontent.com/great-expectations/gx_tutorials/…;) data_source = context.data_sources.add_pandas("pandas") data_asset = data_source.add_dataframe_asset(name="pd dataframe asset") batch_definition = data_asset.add_batch_definition_whole_dataframe("batch definition") batch = batch_definition.get_batch(batch_parameters={"dataframe": df}) # Xác thực giá trị có nằm trong khoảng từ 1 đến 6 hay không expectation = gx.expectations.ExpectColumnValuesToBeBetween(column="passenger_count", min_value=1, max_value=6) validation_result = batch.validate(expectation)Ví dụ cấu hình thông báo Slack khi xác thực thất bại:
from gx.actions import SlackNotificationAction, UpdateDataDocsAction action_list = [ SlackNotificationAction( name="send_slack_notification_on_failed_expectations", slack_token="${validation_notification_slack_webhook}", slack_channel="${validation_notification_slack_channel}", notify_on="failure", show_failed_expectations=True, ), UpdateDataDocsAction(name="update_all_data_docs"), ]
2. Pointblank
- Công cụ xác thực dữ liệu Python mới ra mắt năm 2024 (do RStudio → Posit phát triển)
- Chịu ảnh hưởng từ Great Expectations và cung cấp cú pháp trực quan
- Hỗ trợ nhiều nguồn dữ liệu như Polars, Pandas, DuckDB
- Mã ví dụ:
import pointblank as pb validation = ( pb.Validate(data=pb.load_dataset(dataset="small_table")) .col_vals_gt(columns="d", value=100) .col_vals_le(columns="c", value=5) .col_exists(columns=["date", "date_time"]) .interrogate() ) - Thiếu tính năng tự động hóa các bước hậu xử lý → cần xử lý bước tiếp theo thủ công
3. Pandera
-
Cung cấp API tương tự Great Expectations
-
Hỗ trợ chức năng kiểm định giả thuyết thống kê
-
Hỗ trợ nhiều nguồn dữ liệu như Polars, Geopandas, Pyspark
-
Mã ví dụ:
import pandas as pd import pandera as pa df = pd.DataFrame({ "column1": [1, 4, 0, 10, 9], "column2": [-1.3, -1.4, -2.9, -10.1, -20.4], "column3": ["value_1", "value_2", "value_3", "value_2", "value_1"], }) schema = pa.DataFrameSchema({ "column1": pa.Column(int, checks=pa.Check.le(10)), "column2": pa.Column(float, checks=pa.Check.lt(-1.2)), "column3": pa.Column(str, checks=[ pa.Check.str_startswith("value_"), pa.Check(lambda s: s.str.split("_", expand=True).shape[1] == 2) ]), }) validated_df = schema(df) -
Ví dụ kiểm định giả thuyết thống kê:
from scipy import stats schema = pa.DataFrameSchema({ "height_in_feet": pa.Column(float, [ pa.Hypothesis.two_sample_ttest( sample1="M", sample2="F", groupby="sex", relationship="greater_than", alpha=0.05, equal_var=True ) ]), "sex": pa.Column(str) }) schema.validate(df)
4. Pydantic
- Công cụ xác thực dựa trên dictionary, không phải dataframe
- Phù hợp để xác thực JSON và dữ liệu phi cấu trúc
- Có thể tích hợp với các API framework như FastAPI
- Mã ví dụ:
from pydantic import BaseModel, PositiveInt from datetime import datetime class User(BaseModel): id: int name: str = 'John Doe' signup_ts: datetime | None tastes: dict[str, PositiveInt] external_data = { 'id': 123, 'signup_ts': '2019-06-01 12:22', 'tastes': {'wine': 9, 'cheese': 7, 'cabbage': '1'} } user = User(**external_data)
5. Cerberus
- Công cụ xác thực dựa trên dictionary
- Cấu hình đơn giản theo quy tắc
- Trả về giá trị True/False → không ném lỗi
- Mã ví dụ:
from cerberus import Validator schema = {'name': {'type': 'string'}} v = Validator(schema) document = {'name': 'john doe'} v.validate(document) # True
6. jsonschema
- Công cụ xác thực dữ liệu JSON
- Định nghĩa dựa trên schema
- Mã ví dụ:
from jsonschema import validate schema = { "type": "object", "properties": { "price": {"type": "number"}, "name": {"type": "string"} } } validate(instance={"name": "Eggs", "price": 34.99}, schema=schema)
Nên dùng công cụ nào trong khu vực công
- Xác thực dataframe hoặc cơ sở dữ liệu:
- Dùng trong hệ thống production → khuyến nghị Great Expectations
- Xác thực đơn giản → khuyến nghị Pandera
- Muốn thử công cụ mới → khuyến nghị Pointblank
- Xác thực API hoặc dữ liệu người dùng nhập:
- Dữ liệu phi cấu trúc → khuyến nghị Pydantic
- Xác thực JSON đơn giản:
- khuyến nghị jsonschema
- Nếu chỉ cần xác thực đơn giản:
- khuyến nghị Cerberus
Chưa có bình luận nào.