From 6c9ed9ad36d167898ea16f069c1cd4ee4547f179 Mon Sep 17 00:00:00 2001 From: Madeleine Corneli Date: Thu, 29 Jan 2026 15:50:16 -0800 Subject: [PATCH] Add Data Steward Agent tutorial to Gen AI section Tutorial covers AI-powered metadata documentation using Ollama/Mistral to automatically generate column comments for Exasol databases. Includes UDF implementation, workflow steps, Gradio web UI overview, and scheduled automation options. --- .../data_steward_agent/data_steward_app.png | Bin 0 -> 156663 bytes doc/gen_ai/data_steward_agent/index.rst | 537 ++++++++++++++++++ doc/gen_ai/index.rst | 1 + 3 files changed, 538 insertions(+) create mode 100644 doc/gen_ai/data_steward_agent/data_steward_app.png create mode 100644 doc/gen_ai/data_steward_agent/index.rst diff --git a/doc/gen_ai/data_steward_agent/data_steward_app.png b/doc/gen_ai/data_steward_agent/data_steward_app.png new file mode 100644 index 0000000000000000000000000000000000000000..bfa309d5298263b9649696331acff71c5226f75d GIT binary patch literal 156663 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 literal 0 HcmV?d00001 diff --git a/doc/gen_ai/data_steward_agent/index.rst b/doc/gen_ai/data_steward_agent/index.rst new file mode 100644 index 0000000..92a2588 --- /dev/null +++ b/doc/gen_ai/data_steward_agent/index.rst @@ -0,0 +1,537 @@ +=================== +Data Steward Agent +=================== + +Overview +======== + +Learn how to automatically generate and manage column comments in your Exasol database using AI. This tutorial demonstrates a Data Steward Agent that analyzes column names, data types, and sample values to suggest meaningful documentation using local LLMs (Ollama). + +Why Automate Metadata Documentation? +------------------------------------ + +Database metadata is critical for data discovery, governance, and effective data usage. However, many databases lack proper documentation, especially: + +* Inherited databases from previous teams +* Post-migration scenarios where metadata was lost +* Rapidly evolving schemas where documentation falls behind + +**Benefits of AI-Assisted Documentation:** + +**Time Savings** + * Automate tedious documentation tasks + * Process hundreds of columns in minutes + * Focus human effort on review rather than drafting + +**Consistency** + * Uniform comment style across all schemas + * Professional, concise descriptions + * No more cryptic abbreviations left unexplained + +**AI-Ready Data** + * Rich metadata enables AI-driven analytics + * Semantic context for LLM-powered queries + * Foundation for natural language data exploration + +**Self-Hosted & Secure** + * Data never leaves your infrastructure + * No third-party API calls + * Full compliance control + +Architecture +============ + +.. code-block:: text + + ┌─────────────────┐ HTTP Request ┌─────────────────┐ + │ Exasol DB │ ────────────────────> │ Mistral model │ + Column <───── │ (UDF + Views) │ (Python UDF) │ (Ollama) │ + Comments SQL │ │ <──────────────────── │ │ + └─────────────────┘ JSON Response └─────────────────┘ + +The agent workflow: + +1. **Identify** - Query system catalog for columns without comments +2. **Analyze** - Gather column metadata and sample values +3. **Generate** - Call Ollama to suggest descriptions +4. **Review** - Human approval of suggestions +5. **Apply** - Write approved comments to database + +Prerequisites +============= + +**Required:** + +* Exasol database (Docker image works for testing) +* Ollama installed locally with Mistral model +* Python 3.8+ with pyexasol +* Basic SQL knowledge + +**Ollama Setup:** + +.. code-block:: bash + + # Install Ollama (macOS) + brew install ollama + + # Start server and download model + ollama serve & + ollama pull mistral + +Create Agent Infrastructure +============================ + +Create a dedicated schema for the Data Steward Agent with tables to track suggestions and their status. + +Schema and Tables +----------------- + +.. code-block:: sql + + -- Create DATA_STEWARD schema + CREATE SCHEMA IF NOT EXISTS DATA_STEWARD; + + -- SUGGESTIONS table stores LLM-generated column comment suggestions + CREATE TABLE IF NOT EXISTS DATA_STEWARD.SUGGESTIONS ( + ID INTEGER IDENTITY PRIMARY KEY, + SCHEMA_NAME VARCHAR(128) NOT NULL, + TABLE_NAME VARCHAR(128) NOT NULL, + COLUMN_NAME VARCHAR(128) NOT NULL, + SUGGESTED_COMMENT VARCHAR(2000), + STATUS VARCHAR(20) DEFAULT 'PENDING', + CREATED_AT TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + UPDATED_AT TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ); + + -- APPLIED_LOG tracks which comments have been applied + CREATE TABLE IF NOT EXISTS DATA_STEWARD.APPLIED_LOG ( + ID INTEGER IDENTITY PRIMARY KEY, + SUGGESTION_ID INTEGER NOT NULL, + APPLIED_AT TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + APPLIED_BY VARCHAR(128) DEFAULT CURRENT_USER, + SCHEMA_NAME VARCHAR(128), + TABLE_NAME VARCHAR(128), + COLUMN_NAME VARCHAR(128), + COMMENT_TEXT VARCHAR(2000) + ); + +Views +----- + +.. code-block:: sql + + -- View to identify columns missing comments + CREATE OR REPLACE VIEW DATA_STEWARD.MISSING_METADATA AS + SELECT + COLUMN_SCHEMA, + COLUMN_TABLE, + COLUMN_NAME, + COLUMN_TYPE, + COLUMN_IS_NULLABLE + FROM + SYS.EXA_ALL_COLUMNS + WHERE + COLUMN_COMMENT IS NULL + AND COLUMN_SCHEMA NOT IN ('SYS', 'EXA_STATISTICS', 'DATA_STEWARD') + ORDER BY + COLUMN_SCHEMA, + COLUMN_TABLE, + COLUMN_ORDINAL_POSITION; + + -- Helper view: formatted column list per table + CREATE OR REPLACE VIEW DATA_STEWARD.TABLE_COLUMNS_FORMATTED AS + SELECT + COLUMN_SCHEMA, + COLUMN_TABLE, + GROUP_CONCAT( + COLUMN_NAME || ' (' || COLUMN_TYPE || ')' + ORDER BY COLUMN_ORDINAL_POSITION + SEPARATOR ', ' + ) AS COLUMN_LIST + FROM SYS.EXA_ALL_COLUMNS + WHERE COLUMN_SCHEMA NOT IN ('SYS', 'EXA_STATISTICS', 'DATA_STEWARD') + GROUP BY COLUMN_SCHEMA, COLUMN_TABLE; + +Ollama Connection +----------------- + +Store the Ollama endpoint in a connection object for reusability: + +.. code-block:: sql + + -- Replace localhost with your machine's IP if Exasol runs in Docker + CREATE OR REPLACE CONNECTION OLLAMA_API + TO 'http://YOUR_IP:11434/api/generate' + IDENTIFIED BY ''; + +.. note:: + If Exasol runs in Docker, use your machine's local IP (e.g., ``10.0.0.186``) + instead of ``localhost``. Find it with ``ipconfig getifaddr en0`` (macOS) + or ``hostname -I`` (Linux). + +AI-Powered UDF +=============== + +This UDF calls Ollama to generate column comment suggestions based on metadata and sample values. + +.. code-block:: text + + CREATE OR REPLACE PYTHON3 SCALAR SCRIPT DATA_STEWARD.SUGGEST_COLUMN_COMMENT( + connection_name VARCHAR(200), + schema_name VARCHAR(128), + table_name VARCHAR(128), + column_name VARCHAR(128), + data_type VARCHAR(100), + sample_values VARCHAR(2000), + table_columns VARCHAR(4000) + ) + RETURNS VARCHAR(2000) AS + + import requests + import json + + def run(ctx): + try: + conn_info = exa.get_connection(ctx.connection_name) + ollama_url = conn_info.address + + prompt = f"""You are a database documentation expert. Generate a concise, informative comment for this database column. + + Schema: {ctx.schema_name} + Table: {ctx.table_name} + Column: {ctx.column_name} + Data Type: {ctx.data_type} + Sample Values: {ctx.sample_values if ctx.sample_values else 'No samples'} + Table Columns: {ctx.table_columns if ctx.table_columns else 'Not provided'} + + Provide ONLY the comment text (max 200 characters). Be specific, professional, and concise.""" + + payload = { + 'model': 'mistral', + 'prompt': prompt, + 'stream': False, + 'options': {'temperature': 0.3, 'num_predict': 100} + } + + response = requests.post(ollama_url, json=payload, timeout=30) + response.raise_for_status() + + comment = response.json().get('response', '').strip() + comment = comment.replace('"', '').replace("'", '').strip() + + return comment[:200] if len(comment) > 200 else comment + + except Exception as e: + return f"Error: {str(e)[:100]}" + / + +Workflow +======== + +Identify Missing Metadata +------------------------- + +Query the view to see which columns need documentation: + +.. code-block:: sql + + -- See columns missing comments + SELECT + COLUMN_SCHEMA, + COLUMN_TABLE, + COLUMN_NAME, + COLUMN_TYPE + FROM DATA_STEWARD.MISSING_METADATA + WHERE COLUMN_SCHEMA IN ('SALES', 'HR') -- Your target schemas + LIMIT 20; + + -- Count by schema + SELECT + COLUMN_SCHEMA, + COUNT(*) as missing_comments + FROM DATA_STEWARD.MISSING_METADATA + GROUP BY COLUMN_SCHEMA + ORDER BY missing_comments DESC; + +Generate Suggestions +-------------------- + +Call the UDF to generate comment suggestions for columns. The example below processes columns one at a time to include real sample values: + +.. code-block:: sql + + -- Test the UDF on a single column + SELECT DATA_STEWARD.SUGGEST_COLUMN_COMMENT( + 'OLLAMA_API', + 'SALES', + 'ORDERS', + 'ord_dt', + 'DATE', + '2024-01-15, 2024-02-20, 2024-03-10', + 'ord_id (INTEGER), cust_id (INTEGER), ord_dt (DATE), tot_amt (DECIMAL)' + ); + +For batch processing, use Python with pyexasol to fetch sample values dynamically: + +.. code-block:: python + + import pyexasol + + conn = pyexasol.connect(dsn="localhost:8563", user="sys", password="exasol") + + # Get columns to process + columns = conn.execute(""" + SELECT m.COLUMN_SCHEMA, m.COLUMN_TABLE, m.COLUMN_NAME, + m.COLUMN_TYPE, tc.COLUMN_LIST + FROM DATA_STEWARD.MISSING_METADATA m + JOIN DATA_STEWARD.TABLE_COLUMNS_FORMATTED tc + ON m.COLUMN_SCHEMA = tc.COLUMN_SCHEMA + AND m.COLUMN_TABLE = tc.COLUMN_TABLE + WHERE m.COLUMN_SCHEMA = 'SALES' + LIMIT 10 + """).fetchall() + + for schema, table, column, dtype, col_list in columns: + # Fetch sample values + samples = conn.execute(f''' + SELECT DISTINCT "{column}" + FROM {schema}.{table} + WHERE "{column}" IS NOT NULL + LIMIT 5 + ''').fetchall() + sample_str = ', '.join([str(s[0]) for s in samples])[:500] + + # Generate and store suggestion + conn.execute(f""" + INSERT INTO DATA_STEWARD.SUGGESTIONS + (SCHEMA_NAME, TABLE_NAME, COLUMN_NAME, SUGGESTED_COMMENT, STATUS) + SELECT + '{schema}', '{table}', '{column}', + DATA_STEWARD.SUGGEST_COLUMN_COMMENT( + 'OLLAMA_API', '{schema}', '{table}', '{column}', '{dtype}', + '{sample_str.replace("'", "''")}', + '{col_list.replace("'", "''")[:2000]}' + ), + 'PENDING' + """) + print(f"Generated: {schema}.{table}.{column}") + + conn.commit() + +Review Suggestions +------------------ + +Examine the generated suggestions before approving: + +.. code-block:: sql + + SELECT + ID, + SCHEMA_NAME, + TABLE_NAME, + COLUMN_NAME, + SUGGESTED_COMMENT, + STATUS + FROM DATA_STEWARD.SUGGESTIONS + WHERE STATUS = 'PENDING' + ORDER BY SCHEMA_NAME, TABLE_NAME, ID; + +Approve Suggestions +------------------- + +Mark suggestions as approved after review: + +.. code-block:: sql + + -- Approve all pending suggestions + UPDATE DATA_STEWARD.SUGGESTIONS + SET STATUS = 'APPROVED', UPDATED_AT = CURRENT_TIMESTAMP + WHERE STATUS = 'PENDING'; + + -- Or approve specific suggestions by ID + UPDATE DATA_STEWARD.SUGGESTIONS + SET STATUS = 'APPROVED', UPDATED_AT = CURRENT_TIMESTAMP + WHERE ID IN (1, 2, 3); + + -- Reject a suggestion + UPDATE DATA_STEWARD.SUGGESTIONS + SET STATUS = 'REJECTED', UPDATED_AT = CURRENT_TIMESTAMP + WHERE ID = 4; + +Apply to Database +----------------- + +Generate and execute COMMENT statements for approved suggestions: + +.. code-block:: sql + + -- Preview the statements + SELECT + 'COMMENT ON COLUMN ' || SCHEMA_NAME || '.' || TABLE_NAME || '.' || + COLUMN_NAME || ' IS ''' || REPLACE(SUGGESTED_COMMENT, '''', '''''') || + ''';' as sql_statement + FROM DATA_STEWARD.SUGGESTIONS + WHERE STATUS = 'APPROVED'; + +Apply using Python: + +.. code-block:: python + + result = conn.execute(""" + SELECT ID, SCHEMA_NAME, TABLE_NAME, COLUMN_NAME, SUGGESTED_COMMENT + FROM DATA_STEWARD.SUGGESTIONS + WHERE STATUS = 'APPROVED' + """).fetchall() + + for suggestion_id, schema, table, column, comment in result: + safe_comment = comment.replace("'", "''") + + # Apply the comment + conn.execute(f"COMMENT ON COLUMN {schema}.{table}.{column} IS '{safe_comment}'") + + # Log and update status + conn.execute(f""" + INSERT INTO DATA_STEWARD.APPLIED_LOG + (SUGGESTION_ID, SCHEMA_NAME, TABLE_NAME, COLUMN_NAME, COMMENT_TEXT) + VALUES ({suggestion_id}, '{schema}', '{table}', '{column}', '{safe_comment}') + """) + conn.execute(f""" + UPDATE DATA_STEWARD.SUGGESTIONS + SET STATUS = 'APPLIED', UPDATED_AT = CURRENT_TIMESTAMP + WHERE ID = {suggestion_id} + """) + + conn.commit() + +Verify Results +-------------- + +Confirm comments were applied successfully: + +.. code-block:: sql + + -- Check applied comments in system catalog + SELECT + COLUMN_SCHEMA, + COLUMN_TABLE, + COLUMN_NAME, + COLUMN_COMMENT + FROM SYS.EXA_ALL_COLUMNS + WHERE COLUMN_SCHEMA = 'SALES' + AND COLUMN_COMMENT IS NOT NULL; + + -- View application log + SELECT * FROM DATA_STEWARD.APPLIED_LOG + ORDER BY APPLIED_AT DESC + LIMIT 10; + +Web UI with Gradio +================== + +For a more interactive experience, the Data Steward Agent includes a Gradio-based web interface that provides a visual dashboard for managing metadata suggestions. + +.. image:: data_steward_app.png + :alt: Data Steward Agent Gradio Interface + :width: 100% + +The web UI offers: + +**Dashboard Tab** + * Real-time statistics on documentation coverage + * Progress tracking across schemas + * Visual indicators for pending, approved, and applied suggestions + +**Generate Tab** + * Select target schemas from a dropdown + * One-click suggestion generation + * Progress feedback during processing + +**Review Tab** + * Browse pending suggestions in a table view + * Approve, reject, or edit individual suggestions + * Bulk approve/reject actions for efficiency + +**Apply Tab** + * Preview SQL statements before execution + * Apply all approved comments with one click + * View application history and logs + +Running the Web UI +------------------ + +.. code-block:: bash + + # Clone the repository + git clone https://github.com/exasol-labs/metadata-agent.git + cd metadata-agent + + # Set up environment + python3 -m venv venv + source venv/bin/activate + pip install -r requirements.txt + + # Configure database connection + export EXASOL_DSN="your-host:8563" + export EXASOL_USER="your-user" + export EXASOL_PASSWORD="your-password" + + # Start the web interface + python src/app.py + +Access the UI at http://localhost:7860 + +Scheduled Automation +==================== + +Run the agent automatically to continuously document new columns. + +Workflow Modes +-------------- + +.. list-table:: + :header-rows: 1 + :widths: 25 75 + + * - Mode + - Behavior + * - **Conservative** (default) + - Generate PENDING suggestions, apply previously APPROVED + * - **Automated** + - Generate, auto-approve passing quality checks, apply + * - **Generate only** + - Only generate suggestions for manual review + * - **Apply only** + - Only apply previously approved suggestions + +Cron Setup +---------- + +.. code-block:: bash + + # Add to crontab for daily 2 AM runs + crontab -e + + # Add this line + 0 2 * * * cd /path/to/metadata-agent && python src/scheduled_run.py >> logs/scheduled.log 2>&1 + +Resources +========= + +**Documentation:** + +* `Exasol UDF Documentation `_ +* `Ollama GitHub `_ +* `Exasol Docker Image `_ + +**Source Code:** + +* `Data Steward Agent Repository `_ + +Feedback +======== + +* Contact us on the `Exasol Community `_ + +--- + +*Last updated: January 2026* diff --git a/doc/gen_ai/index.rst b/doc/gen_ai/index.rst index 8287d88..ae2d8bc 100644 --- a/doc/gen_ai/index.rst +++ b/doc/gen_ai/index.rst @@ -7,4 +7,5 @@ Examples and tutorials for using generative AI and Large Language Models (LLMs) :maxdepth: 2 ai_text_summary/index.rst + data_steward_agent/index.rst