### Install Pointblank MCP Source: https://posit-dev.github.io/pointblank/user-guide/mcp-quick-start Installs the pointblank library with MCP support using pip. This is the initial step to enable conversational data validation features. ```shell pip install pointblank[mcp] ``` -------------------------------- ### Verifying Pointblank Installation and Version Source: https://posit-dev.github.io/pointblank/user-guide/installation Imports the Pointblank library and prints its version number to confirm a successful installation. ```python import pointblank as pb print(pb.__version__) ``` -------------------------------- ### Basic Pointblank Installation with Pixi Source: https://posit-dev.github.io/pointblank/user-guide/installation Installs Pointblank within a project managed by pixi. This ensures reproducible environments. ```shell # add pointblank to project pixi init name-of-project cd name-of-project pixi add pointblank ``` -------------------------------- ### Pointblank MCP - Load Data Commands Source: https://posit-dev.github.io/pointblank/user-guide/mcp-quick-start Examples of natural language commands to load data into Pointblank for validation. These commands specify file paths, dataset names, and file types. ```text "Load the file /path/to/data.csv" "Load my Netflix dataset from the working directory" "Load the CSV file with sales metrics" "Load customer_data.csv as my main dataset" ``` -------------------------------- ### Conversational Data Validation Prompt Source: https://posit-dev.github.io/pointblank/user-guide/mcp-quick-start An example prompt to initiate data validation using Pointblank MCP. This demonstrates how to interact with the system conversationally to load and check data quality. ```text "Load my sales data and check its quality" ``` -------------------------------- ### Pointblank Development Version Installation from GitHub Source: https://posit-dev.github.io/pointblank/user-guide/installation Installs the latest development version of Pointblank directly from its GitHub repository using pip. This is for users who want the newest features and are comfortable with potential instability. ```shell pip install git+https://github.com/posit-dev/pointblank.git ``` -------------------------------- ### Pointblank MCP - Explore Data Commands Source: https://posit-dev.github.io/pointblank/user-guide/mcp-quick-start Examples of natural language commands to explore and profile data using Pointblank MCP. These commands generate data previews, column summaries, and missing value analyses. ```text "Analyze the data for netflix_data" "Show me a preview of the loaded data" "Create a column summary table" "Generate a missing values analysis" ``` -------------------------------- ### Pointblank Ibis Backends Installation with uv Source: https://posit-dev.github.io/pointblank/user-guide/installation Installs optional Pointblank Ibis backends for various database systems using uv. This provides fast installation for different database connectors. ```shell uv pip install pointblank[sqlite] # SQLite uv pip install pointblank[duckdb] # DuckDB uv pip install pointblank[postgres] # PostgreSQL uv pip install pointblank[mysql] # MySQL uv pip install pointblank[mssql] # Microsoft SQL Server uv pip install pointblank[bigquery] # BigQuery uv pip install pointblank[pyspark] # Apache Spark uv pip install pointblank[databricks] # Databricks uv pip install pointblank[snowflake] # Snowflake # Example of installing multiple backends uv pip install pointblank[duckdb,postgres,sqlite] ``` -------------------------------- ### Basic Pointblank Installation with uv Source: https://posit-dev.github.io/pointblank/user-guide/installation Installs the core Pointblank validation functionality using the uv package manager. uv is known for its speed. ```shell uv pip install pointblank ``` -------------------------------- ### Pointblank MCP - Quick Data Check Use Case Source: https://posit-dev.github.io/pointblank/user-guide/mcp-quick-start Example conversational flow for a quick data check upon receiving a new dataset. It demonstrates loading, quality analysis, and user feedback. ```text 👤 "I just got netflix_data.csv. Is it clean?" 🤖 "Loading dataset... Found 16,000 movies/shows with 18 columns. Quality analysis complete: - ✅ No duplicate show IDs - ⚠️ 466 missing countries (2.9%) - ⚠️ 132 missing directors (0.8%) Opening data preview in your browser..." ``` -------------------------------- ### Pointblank MCP - Run and Export Commands Source: https://posit-dev.github.io/pointblank/user-guide/mcp-quick-start Examples of natural language commands to execute data validation checks and export results using Pointblank MCP. These commands trigger validation runs and save failure reports. ```text "Run the validation and show results" "Export validation failures to CSV" "Get failed rows for step 2" "Save the validation report" ``` -------------------------------- ### Pointblank AI-Assisted Validation Installation with Pip Source: https://posit-dev.github.io/pointblank/user-guide/installation Installs Pointblank with experimental support for AI-assisted validation plan generation using pip. This includes dependencies for LLM provider integration. ```shell pip install pointblank[generate] ``` -------------------------------- ### Pointblank MCP - Check Quality Commands Source: https://posit-dev.github.io/pointblank/user-guide/mcp-quick-start Examples of natural language commands to initiate data quality checks using Pointblank MCP. These commands can apply predefined templates or specify custom validation rules. ```text "Create a validator for netflix_data" "Add validation that ratings are between 0 and 10" "Check that all release years are reasonable" "Apply the basic_quality template" ``` -------------------------------- ### Pointblank Ibis Backends Installation with Pixi Source: https://posit-dev.github.io/pointblank/user-guide/installation Installs optional Pointblank Ibis backends for various database systems using pixi. This integrates database connectivity into your pixi-managed project. ```shell pixi add pointblank-sqlite # SQLite pixi add pointblank-duckdb # DuckDB pixi add pointblank-postgres # PostgreSQL pixi add pointblank-mysql # MySQL pixi add pointblank-mssql # Microsoft SQL Server pixi add pointblank-bigquery # BigQuery pixi add pointblank-pyspark # Apache Spark pixi add pointblank-databricks # Databricks pixi add pointblank-snowflake # Snowflake # Example of installing multiple backends pixi add pointblank-duckdb pointblank-postgres pointblank-sqlite ``` -------------------------------- ### Pointblank Ibis Backends Installation with Pip Source: https://posit-dev.github.io/pointblank/user-guide/installation Installs optional Pointblank Ibis backends for various database systems using pip. Each backend enables connectivity to a specific database. ```shell pip install pointblank[sqlite] # SQLite pip install pointblank[duckdb] # DuckDB pip install pointblank[postgres] # PostgreSQL pip install pointblank[mysql] # MySQL pip install pointblank[mssql] # Microsoft SQL Server pip install pointblank[bigquery] # BigQuery pip install pointblank[pyspark] # Apache Spark pip install pointblank[databricks] # Databricks pip install pointblank[snowflake] # Snowflake # Example of installing multiple backends pip install pointblank[duckdb,postgres,sqlite] ``` -------------------------------- ### Load and Preview Dataset (Python) Source: https://posit-dev.github.io/pointblank/reference/Validate.row_count_match Loads the 'small_table' dataset using Pointblank and displays a preview of its structure and first few rows. This is a common setup for demonstrating validation examples. ```python import pointblank as pb small_table = pb.load_dataset("small_table") pb.preview(small_table) ``` -------------------------------- ### VS Code MCP Server Configuration Source: https://posit-dev.github.io/pointblank/user-guide/mcp-quick-start Configures the Pointblank MCP server for VS Code. This JSON file specifies the command and arguments to launch the server, allowing for conversational data validation within the IDE. ```json { "servers": { "pointblank": { "command": "python", "args": ["-m", "pointblank_mcp_server.pointblank_server"] } } } ``` -------------------------------- ### Database Connection String Examples Source: https://posit-dev.github.io/pointblank/reference/preview Examples of database connection strings for various database types. These strings specify the database dialect, connection details, and the table name using a `::table_name` suffix. Ibis library with the appropriate backend driver is required. ```text "duckdb:///path/to/database.ddb::table_name" "sqlite:///path/to/database.db::table_name" "postgresql://user:password@localhost:5432/database::table_name" "mysql://user:password@localhost:3306/database::table_name" "bigquery://project/dataset::table_name" "snowflake://user:password@account/database/schema::table_name" ``` -------------------------------- ### Preview and Scan Data Sources with Pointblank CLI Source: https://posit-dev.github.io/pointblank/demos/cli-interactive Demonstrates how to preview and scan various data sources using the Pointblank CLI. It covers built-in datasets, local files (including patterns for multiple files), remote files from GitHub, and database tables via connection strings. This allows for quick inspection and assessment of data. ```shell # Try previewing a built-in dataset pb preview small_table # Access local files (even use patterns to combine multiple Parquet files) pb preview sales_data.csv pb scan "data/*.parquet" # Inspect datasets in GitHub repositories (no need to download the data!) pb preview "https://github.com/user/repo/blob/main/data.csv" pb missing "https://raw.githubusercontent.com/user/repo/main/sales.parquet" # Work with DB tables through connection strings pb info "duckdb:///warehouse/analytics.ddb::customers" ``` -------------------------------- ### Install and Verify Pointblank CLI Source: https://posit-dev.github.io/pointblank/demos/cli-interactive Installs the Pointblank Python package using pip and verifies the installation by running the 'pb --help' command. This is the initial step to set up and confirm the CLI tool is ready for use. ```shell pip install pointblank pb --help ``` -------------------------------- ### Pointblank MCP - Issue Investigation Use Case Source: https://posit-dev.github.io/pointblank/user-guide/mcp-quick-start Example conversational flow for investigating specific data issues. It demonstrates querying for data meeting certain criteria and exporting the relevant rows. ```text 👤 "Show me movies with ratings above 9.5" 🤖 "Creating validator for high ratings... Found 47 entries with ratings > 9.5 Exporting suspicious rows to CSV Most are documentaries - could be valid!" ``` -------------------------------- ### Preview Columns Matching a Pattern using Pointblank Source: https://posit-dev.github.io/pointblank/user-guide/preview This example shows how to preview columns that match a regular expression pattern using the `pb.matches()` selector within the `columns_subset=` argument of `pb.preview()`. This is useful for dynamically selecting columns based on naming conventions, such as those containing 'dep_' or 'arr_'. ```r pb.preview(nycflights, columns_subset=pb.matches("dep_|arr_")) ``` -------------------------------- ### Pointblank MCP - Daily Validation Use Case Source: https://posit-dev.github.io/pointblank/user-guide/mcp-quick-start Example conversational flow for performing daily data quality checks using a predefined validation template. It shows applying a template and receiving a success report. ```text 👤 "Apply the basic_quality template to my data" 🤖 "Creating validator with basic quality checks... ✅ Data types validated ✅ Missing value thresholds checked ✅ Duplicate detection passed Validation complete! All checks passed." ``` -------------------------------- ### Install Ibis Framework with Backend Drivers (Bash) Source: https://posit-dev.github.io/pointblank/reference/connect_to_table Installs the Ibis framework along with common database backend drivers, or specific drivers as needed. This is a prerequisite for using the `connect_to_table` function with various database systems. ```bash # You can install a set of common backends: pip install 'ibis-framework[duckdb,postgres,mysql,sqlite]' # ...or specific backends as needed: pip install 'ibis-framework[duckdb]' # for DuckDB pip install 'ibis-framework[postgres]' # for PostgreSQL ``` -------------------------------- ### Get Row Count from Database Connection String Source: https://posit-dev.github.io/pointblank/reference/get_row_count This example shows how to retrieve the row count from a database table by providing a connection string. The function supports various database backends via Ibis, requiring the backend driver to be installed. ```python # Example connection string for DuckDB db_connection_string = "duckdb:///path/to/database.ddb::table_name" pb.get_row_count(db_connection_string) # Example connection string for PostgreSQL # postgres_connection_string = "postgresql://user:password@localhost:5432/database::table_name" # pb.get_row_count(postgres_connection_string) ``` -------------------------------- ### Preview Data with pb preview Source: https://posit-dev.github.io/pointblank/user-guide/cli-data-inspection The `pb preview` command displays the first and last few rows of a dataset in a table format within the console. It provides information about the data source, DataFrame library, and simplified data types. Options include `--no-row-numbers` to hide row indicators and `--columns` or `--col-range` for selecting specific columns. It can also save the preview as an HTML file using `--output-html`. ```bash pb preview worldcities.csv pb preview worldcities.csv --no-row-numbers pb preview game_revenue pb preview game_revenue -columns "player_id, item_type, item_name, start_day" pb preview game_revenue —-col-range "3:6" pb preview --help ``` -------------------------------- ### List Built-in Datasets with `pb datasets` Source: https://posit-dev.github.io/pointblank/user-guide/cli-reference Lists all available built-in datasets that can be used with Pointblank commands. This command does not accept any arguments. ```bash pb datasets ``` -------------------------------- ### Configuring prompt() with Advanced Parameters Source: https://posit-dev.github.io/pointblank/reference/Validate.prompt Illustrates how to use advanced parameters of the prompt() method, such as 'columns_subset', 'batch_size', and 'max_concurrent', to fine-tune the validation process for efficiency and cost management. ```python from pointblank import Validate # Example validation prompt validation_prompt = "Values should indicate positive sentiment." # Specify the LLM model to use model_name = "openai:gpt-4o" # Assuming 'df' is your pandas DataFrame validation_results = Validate(df).prompt( prompt=validation_prompt, model=model_name, columns_subset=["review_text", "rating"], batch_size=500, max_concurrent=5, brief="Sentiment check on reviews" ).validate() print(validation_results) ``` -------------------------------- ### Preview Database Table using DuckDB Connection String with Pointblank Source: https://posit-dev.github.io/pointblank/reference/preview This example shows how to preview data directly from a database table using a connection string. It first retrieves the path to a DuckDB database file and then constructs a connection string specifying the database file and the table name using the `::table_name` suffix. ```python # Get path to a DuckDB database file from package data duckdb_path = pb.get_data_path("game_revenue", "duckdb") pb.preview(f"duckdb:///{duckdb_path}::game_revenue") ``` -------------------------------- ### Basic Pointblank Installation with Conda Source: https://posit-dev.github.io/pointblank/user-guide/installation Installs the Pointblank package from the conda-forge channel using the conda package manager. ```shell conda install -c conda-forge pointblank ``` -------------------------------- ### Pointblank MCP - Create Data Validations Commands Source: https://posit-dev.github.io/pointblank/user-guide/mcp-quick-start Examples of natural language commands to add specific data validation rules within Pointblank MCP. These rules enforce uniqueness, check for non-empty fields, and validate formats. ```text "Add validation that show_id values are unique" "Check that cast field is not empty for movies" "Ensure vote_count is greater than 0" "Validate that country field follows ISO format" ``` -------------------------------- ### Pointblank with Pandas DataFrame Library Installation Source: https://posit-dev.github.io/pointblank/user-guide/installation Installs Pointblank along with the Pandas DataFrame library. This is useful if you prefer Pandas for data manipulation. ```shell # Using pip pip install pointblank[pd] # Or manually pip install pandas>=2.2.3 ``` -------------------------------- ### Using prompt() with Preprocessing and Segmentation Source: https://posit-dev.github.io/pointblank/reference/Validate.prompt Shows how to incorporate custom preprocessing functions ('pre') and data segmentation ('segments') with the prompt() method to handle complex data structures or perform targeted validations. ```python from pointblank import Validate # Example preprocessing function def clean_text(table): table['text_column'] = table['text_column'].str.lower().str.strip() return table # Example validation prompt validation_prompt = "The description should mention a country name." # Specify the LLM model to use model_name = "ollama:llama3" # Assuming 'df' is your pandas DataFrame validation_results = Validate(df).prompt( prompt=validation_prompt, model=model_name, pre=clean_text, segments=("category_column", ["electronics", "books"]), brief="Country mention validation" ).validate() print(validation_results) ``` -------------------------------- ### Pointblank with Polars DataFrame Library Installation Source: https://posit-dev.github.io/pointblank/user-guide/installation Installs Pointblank along with the Polars DataFrame library. This is useful if you prefer Polars for data manipulation. ```shell # Using pip pip install pointblank[pl] # Or manually pip install polars>=1.24.0 ``` -------------------------------- ### Main Command: pb Source: https://posit-dev.github.io/pointblank/user-guide/cli-reference The main entry point for all Pointblank CLI operations, including data validation, exploration, and report generation. ```APIDOC ## pb - Main Command ### Description The main entry point for all Pointblank CLI operations. ### Method CLI Command ### Endpoint `pb` ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example ```bash pb preview data.csv pb scan data.csv pb validate data.csv ``` ### Response #### Success Response (Output to console) - **Version** (`-v`, `--version`): Shows the version of the Pointblank CLI. - **Help** (`-h`, `--help`): Shows the help message for the main command. #### Response Example ``` Pointblank CLI: Data validation and quality tools for data engineers. Use this CLI to validate data quality, explore datasets, and generate comprehensive reports for CSV, Parquet, and database sources. Suitable for data pipelines, ETL validation, and exploratory data analysis from the command line. Quick Examples: pb preview data.csv Preview your data pb scan data.csv Generate data profile pb validate data.csv Run basic validation Use pb COMMAND --help for detailed help on any command. Options: -v, --version Show the version and exit. -h, --help Show this message and exit. Commands: info Display information about a data source. preview Preview a data table showing head and tail rows. scan Generate a data scan profile report. missing Generate a missing values report for a data table. validate Perform single or multiple data validations. run Run a Pointblank validation script or YAML configuration. make-template Create a validation script or YAML configuration template. pl Execute Polars expressions and display results. datasets List available built-in datasets. requirements Check installed dependencies and their availability. ``` ``` -------------------------------- ### Create and Preview Sample Sales Data with Pandas Source: https://posit-dev.github.io/pointblank/user-guide/segmentation This code snippet generates a sample sales dataset with columns for region, product type, units sold, revenue, cost, profit, and profit margin. It uses pandas for data manipulation and numpy for random data generation. The 'pb.preview()' function is used to display the first few rows of the dataset. ```python import pandas as pd import numpy as np # Create a sample sales dataset np.random.seed(123) # Create a simple sales dataset sales_data = pd.DataFrame({ "region": np.random.choice(["North", "South", "East", "West"], 100), "product_type": np.random.choice(["Electronics", "Clothing", "Food"], 100), "units_sold": np.random.randint(5, 100, 100), "revenue": np.random.uniform(100, 10000, 100), "cost": np.random.uniform(50, 5000, 100) }) # Calculate profit sales_data["profit"] = sales_data["revenue"] - sales_data["cost"] sales_data["profit_margin"] = sales_data["profit"] / sales_data["revenue"] # Preview the dataset pb.preview(sales_data) ``` -------------------------------- ### Preview Clean Data with Pointblank Source: https://posit-dev.github.io/pointblank/user-guide/sundering This snippet demonstrates how to use the `pb.preview()` function from the Pointblank library to display a preview of clean data. It assumes that `clean_data` has already been processed and is available. This is a basic step in understanding the structure and content of your validated dataset. ```python pb.preview(clean_data) ``` -------------------------------- ### Simple Threshold Example in Python Source: https://posit-dev.github.io/pointblank/user-guide/thresholds Demonstrates a basic Pointblank validation using `col_vals_not_null` with warning and error thresholds defined using the `Thresholds` class. It shows how to set tolerance levels for null values in a column. ```python import pointblank as pb ( pb.Validate(data=pb.load_dataset(dataset="small_table", tbl_type="polars")) .col_vals_not_null( columns="c", # Set thresholds for the validation step --- thresholds=pb.Thresholds(warning=1, error=0.2) ) .interrogate() ) ``` -------------------------------- ### Pointblank Ibis Backends Installation with Conda Source: https://posit-dev.github.io/pointblank/user-guide/installation Installs optional Pointblank Ibis backends from conda-forge for various database systems. This method is suitable for users managing environments with conda. ```shell conda install -c conda-forge pointblank-sqlite # SQLite conda install -c conda-forge pointblank-duckdb # DuckDB conda install -c conda-forge pointblank-postgres # PostgreSQL conda install -c conda-forge pointblank-mysql # MySQL conda install -c conda-forge pointblank-mssql # Microsoft SQL Server conda install -c conda-forge pointblank-bigquery # BigQuery conda install -c conda-forge pointblank-pyspark # Apache Spark conda install -c conda-forge pointblank-databricks # Databricks conda install -c conda-forge pointblank-snowflake # Snowflake # Example of installing multiple backends conda install -c conda-forge pointblank-duckdb pointblank-postgres pointblank-sqlite ``` -------------------------------- ### Command Line Data Validation with Pointblank Source: https://posit-dev.github.io/pointblank/index These command-line examples demonstrate how to use Pointblank's CLI tools for quick data validation, running YAML workflows, and exploring data. They include examples for checking non-null values in a specific column, executing a YAML validation file with an exit code for CI/CD, and scanning/inspecting data files. ```bash # Quick validation pb validate sales_data.csv --check col-vals-not-null --column customer_id # Run YAML workflows pb run validation.yaml --exit-code # <- Great for CI/CD! # Explore your data pb scan sales_data.csv pb missing sales_data.csv ``` -------------------------------- ### Setup: Create a Polars DataFrame for Validation Examples Source: https://posit-dev.github.io/pointblank/reference/Validate.col_vals_outside Initializes a sample Polars DataFrame named 'tbl' with three numeric columns ('a', 'b', 'c') to be used in subsequent validation examples. This setup is a prerequisite for demonstrating Pointblank's validation capabilities. ```python import pointblank as pb import polars as pl tbl = pl.DataFrame( { "a": [5, 6, 5, 7, 5, 5], "b": [2, 3, 6, 4, 3, 6], "c": [9, 8, 8, 9, 9, 7], } ) pb.preview(tbl) ``` -------------------------------- ### Preview Multiple Parquet Files with Glob Patterns and Directories using Pointblank Source: https://posit-dev.github.io/pointblank/reference/preview This code illustrates how to use `pb.preview()` with glob patterns to select multiple Parquet files or to preview all Parquet files within a directory. It also shows how to preview a partitioned Parquet dataset, where partition columns are automatically discovered. ```python # Multiple Parquet files with glob patterns pb.preview("data/sales_*.parquet") # Directory containing Parquet files pb.preview("parquet_data/") # Partitioned Parquet dataset pb.preview("sales_data/") # Auto-discovers partition columns ``` -------------------------------- ### Python: Load API Key from Environment Variable Source: https://posit-dev.github.io/pointblank/reference/assistant Demonstrates loading an API key from an environment variable using the 'os' module. This is a more secure method for managing API keys compared to hardcoding them directly. The environment variable should be set in shell configuration files like .bashrc or .zshrc. ```python import os api_key = os.getenv("PROVIDER_API_KEY") ``` -------------------------------- ### Get Row Count from Single Parquet File Path Source: https://posit-dev.github.io/pointblank/reference/get_row_count This example demonstrates how to get the row count from a single Parquet file using its path. The get_row_count() function handles Parquet file inputs directly. ```python # Single Parquet file from package data parquet_path = pb.get_data_path("nycflights", "parquet") pb.get_row_count(parquet_path) ``` -------------------------------- ### Get Column Count from DuckDB Table (Ibis) Source: https://posit-dev.github.io/pointblank/reference/get_column_count Demonstrates getting the column count from a DuckDB table managed by Ibis using the get_column_count() function. This usage requires the Ibis library (v9.5.0+) and its corresponding backend driver to be installed. ```python import pointblank as pb small_table_duckdb = pb.load_dataset("small_table", tbl_type="duckdb") pb.get_column_count(small_table_duckdb) ``` -------------------------------- ### Initializing Example Tables for `tbl_match()` Source: https://posit-dev.github.io/pointblank/reference/Validate.tbl_match Sets up two simple Polars DataFrames, `tbl_1` and `tbl_2`, which are used in subsequent examples to demonstrate the `tbl_match()` validation functionality. This includes defining columns with different data types. ```python import pointblank as pb import polars as pl # Create the first table tbl_1 = pl.DataFrame({ "a": [1, 2, 3, 4], "b": ["w", "x", "y", "z"], "c": [4.0, 5.0, 6.0, 7.0] }) # Create the second table tbl_2 = pl.DataFrame({ "a": [1, 2, 3, 4], "b": ["w", "x", "y", "z"], "c": [4.0, 5.0, 6.0, 7.0] }) ``` -------------------------------- ### Pointblank Slack Notification: Basic Setup with Webhook URL Source: https://posit-dev.github.io/pointblank/reference/send_slack_notification Illustrates the basic setup for sending Slack notifications using Pointblank's `send_slack_notification` function. This example requires a valid `webhook_url` to send notifications to a Slack channel. ```python import pointblank as pb # Create a Slack notification function notify_slack = pb.send_slack_notification( webhook_url="https://hooks.slack.com/services/your/webhook/url" ) ``` -------------------------------- ### Validate Columns Starting with 'paid' and Matching Years '23' or '24' Source: https://posit-dev.github.io/pointblank/reference/starts_with This example demonstrates validating columns that start with 'paid' and also match the years '2023' or '2024'. It combines `starts_with()` and `matches()` column selectors using the '&' operator within `pb.col()`. Input is a polars DataFrame, and output is a pointblank validation object. ```python tbl = pl.DataFrame( { "name": ["Alice", "Bob", "Charlie"], "hours_2022": [160, 180, 160], "hours_2023": [182, 168, 175], "hours_2024": [200, 165, 190], "paid_2022": [18.62, 16.95, 18.25], "paid_2023": [19.29, 17.75, 18.35], "paid_2024": [20.73, 18.35, 20.10], } ) validation = ( pb.Validate(data=tbl) .col_vals_gt( columns=pb.col(pb.starts_with("paid") & pb.matches("23|24")), value=10 ) .interrogate() ) validation ```