Schema Mapping

作者 gemini-cli-extensions2df10e25bbf7Apache-2.0215 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫今天更新

Guides the process of analyzing, mapping, and documenting transformations between source and target schemas for any database, data warehouse, or data platform. Focuses exclusively on creating a high-fidelity mapping plan (Mapping Manifesto). Used when initiating an ETL, ELT, or data integration task with schema mapping specification for multiple tables (i.e. more than 3 tables) before writing code. Do NOT use this skill for basic SQL generation without mapping requirements, or when the user already has a complete mapping specification.

僅含說明Data & Analytics
AI 產生的概覽

為 ETL、ELT 或資料整合任務規劃來源到目標的結構描述對應,產出文件化的對應宣言。

功能
引導代理依逐表流程分析來源與目標結構描述,處理術語差異,選擇錨定表,並將每個目標欄位歸類為直接、衍生、聯結、彙總或缺口對應。內容也涵蓋資料清理規則、聯結路徑與條件約束處理。交付物是在撰寫任何管線程式碼之前產生的對應宣言,內含欄位層級的對應表。
適用情境
適用於啟動需要跨多張表(超過三張)之結構描述對應規格的 ETL、ELT 或資料整合任務,且尚未開始實作。不適用於沒有對應需求的基礎 SQL 產生,或已有完整對應規格的情況。
執行需求
僅為說明內容,不含指令碼。需要來源與目標結構描述定義、業務背景與目標平台,並可選擇性提供知識圖譜輸入。資料取樣需要資料庫存取權限或使用者提供的查詢結果。

Skill: Semantic Schema Mapping Planning

Follow this structured process and procedures for analyzing source-to-target data relationships and creating a high-fidelity Mapping Plan (also known as a Mapping Manifesto). This process is platform-agnostic and should be used before generating any target-specific pipeline code. When this skill is loaded, you MUST use this plan and replace the existing generic plan.

When to Use

Use this skill when:

  • You need to map schemas between a source dataset/database and a target destination database/warehouse.
  • You are initiating an ETL, ELT, or data integration task.
  • You need to identify schema gaps, data type conflicts, or aggregation requirements.

Required Input Variables

Before creating the plan, you must obtain or request:

  1. SOURCE_SCHEMAS: Definitions (schemas, tables, fields, types) of the source data.
  2. TARGET_SCHEMAS: Definitions of the desired target/destination schemas.
  3. BUSINESS_CONTEXT: Domain details, business rules, or use case description.
  4. TARGET_PLATFORM: The database or execution engine (e.g., BigQuery, Snowflake, Postgres, Spark, Beam).

Optional Input Variables

  1. KNOWLEDGE_GRAPH: If there's a knowledge graph / property graph available, always inspect the graph for node table definitions, edge table definitions, and foreign key bindings (SOURCE / DESTINATION key references), etc.

The Schema Mapping Planning Procedure

[!IMPORTANT] Execution Strategy: Table-by-Table Iteration

You MUST execute this procedure iteratively, one target table at a time. For each individual table in the TARGET_SCHEMAS, complete Steps 1 through 6 sequentially before moving to the next table. Do not attempt to map or summarize multiple tables in a single batch, as this leads to hallucinations, overlooked constraints, and context window bloat.

Step 1: Semantic & Terminology Translation

Analyze the entity names and attributes in the SOURCE_SCHEMAS against the TARGET_SCHEMAS.

  1. Synonym Resolution: Using the BUSINESS_CONTEXT, map matching concepts with different names (e.g., client_id vs customer_num).
  2. Identify Domain Standards: Match field values or formats to known standards (e.g., ISO country codes, currency codes, UN/LOCODE, UUIDs) based on the business context.
  3. Verify Domain Semantics: Do not rely purely on lexical matching (name similarity). Verify the functional business purpose of the entities in both schemas. Ensure that a target table representing a specific business resource maps to a source table modeling that same resource rather than an unrelated administrative log or generic list table sharing a similar name.

Step 2: Establish the Anchor Table

For each table or collection in the TARGET_SCHEMAS:

  1. Identify the primary source table (the "Anchor Table") that holds the core records for this target.
  2. Identify contributing/lookup tables in the source that will enrich the target records.
  3. Prefer Structured Tables over Generic Key-Value Tables: If the same attribute exists in both a structured column in a domain table and as a generic property in an Entity-Attribute-Value (EAV) key-value/properties table, always anchor on the structured table to ensure schema stability and performant joins.

Step 3: Proactive Data Sampling & Inspection

If a target field mapping is ambiguous or schema types do not tell the whole story (e.g., verifying if a timestamp is ISO-8601, if a string is a JSON array, or checking the distribution of values):

  1. Proactive Inspection: If environment access allows, run platform-specific queries (e.g., SELECT ... LIMIT 10, SELECT COUNT(DISTINCT ... )) to sample values.
  2. User Inquiry: If direct access is not possible, output sample queries and ask the user to provide the output to confirm assumptions before finalizing the plan.

Step 4: Perform Field-Level Gap Analysis & Cleanliness Design

Evaluate every column in each target table to determine its source mapping. Categorize mappings and plan cleanliness transformations:

  • Direct Mapping: A 1-to-1 match.
  • Derived Mapping: Requires type casting, string manipulation, date formatting, mathematical derivation, or case statement logic.
  • Joined Mapping: Requires looking up values from contributing tables using defined join keys.
  • Aggregated Mapping: Requires collapsing 1-to-many relationships (e.g., calculating SUM, COUNT, ARRAY_AGG or string concatenation).
  • Gaps (Unmapped fields): Target fields that do not exist in the source.
    • Constraint Checking: Verify whether the target column has a NOT NULL or REQUIRED constraint in the target schema.
    • Handling Nullable Gaps: If the target column is nullable, explicitly flag it as NULL or define a default value.
    • Handling Non-Nullable Gaps: If the target column is NOT NULL, you MUST NOT map it to NULL. (Rationale: Mapping NOT NULL target columns to NULL will cause execution-time database constraint violations and pipeline failures). You must identify a source field to derive it from, default it to a valid non-null placeholder (e.g., 'UNKNOWN', 0, or default dates), or define logic to generate a valid unique reference.
Universal Data Cleanliness Rules to Incorporate in Mappings:
  1. Null Standardization: Map source strings like "NULL", "None", "N/A", or empty spaces to true database NULL values.
  2. Trim & Casing: Plan to trim leading/trailing whitespaces. Convert standardized codes (e.g., ISO codes, status strings) to uppercase.
  3. Temporal Consistency: Plan to parse all source timestamps into standard ISO-8601 format (YYYY-MM-DDTHH:MM:SSZ) or standard destination TIMESTAMP format. Plan checks to ensure logical temporal progression (e.g., start_time <= end_time).
  4. Defensive Checks: Plan checks for strict destination types (e.g., checking if string is a valid number before casting to DECIMAL).

Step 5: Map Relationships & Joins

Specify the logical join path to connect the Anchor Table with all contributing source tables:

  1. Define the join condition/keys (e.g., source_order.customer_id = source_customer.id).
  2. Identify join scale properties:
    • Large-to-Large: Joining two high-volume transaction tables.
    • Large-to-Small: Joining a transaction table to a static lookup table (ideal for Map-side/Broadcast joins to optimize speed/cost).
  3. Document potential join challenges:
    • Many-to-many risks or potential duplicate generation.
    • Type mismatches on join keys (e.g., joining an INT column to a STRING column).
  4. Graph Validation: If a graph was identified in input, cross-reference the proposed join conditions with the graph's edge table definitions to validate foreign key relationships.

Step 6: Draft the "Mapping Manifesto" (Output Format & Example)

Analyze the schemas and reference the ONE_SHOT_EXAMPLE below to structure your output.

ONE_SHOT_EXAMPLE (How to Structure the Mapping Manifesto)
Example Source Schemas
markdown
dataset: my_music_librarystyle: {id: int, style: string}band: {name: string, biography: string, style: int}cd: {name: string, year: int, artist: string, numbers: array<string>}track: {id: string, number: int, name: string}
Example Target Schemas
markdown
dataset: music_standardartist: {name: string, albums: array<string>}album: {name: string, year: int, genre: string, tracks: array<string>}
The Mapping Manifesto (Expected Output Format)

For each target table, document your column-to-column reasoning:

markdown
# Mapping Plan: `album`* **Anchor Source Table**: `cd`* **Join Paths & Optimization**:    * `cd` JOIN `band` ON `cd.artist = band.name`    * `band` JOIN `style` ON `band.style = style.id`    * `cd` JOIN `track` ON `track.id IN UNNEST(cd.numbers)`
### Field Mappings
| Target Field | Source Field / Logic | Mapping Type | Rationale / Transformation Details || :--- | :--- | :--- | :--- || `album.name` | `cd.name` | Direct | A CD is a physical medium representing an album; direct semantic match || `album.year` | `cd.year` | Direct | Direct semantic match for release year || `album.genre` | `style.style` | Joined | Resolved via `cd.artist` -> `band.name` -> `band.style` (ID) -> `style.id` -> `style.style` (String) || `album.tracks` | `ARRAY_AGG(track.name)` | Aggregated | Aggregation Point: Collapses 1-to-many track IDs in `cd.numbers` into an array of track names |

Critical Operational Rules

  • Plan Before Execution: You MUST NOT generate any ETL code, target-specific pipeline configurations, or migration scripts until the Mapping Manifesto has been presented to and approved by the user. (Rationale: Establishing clear mapping logic first prevents coding errors, avoids circular dependencies, and ensures user alignment on semantic mappings before wasting resources on implementation).
  • Strict Schema Grounding: Every source table and field name referenced in the mapping plan MUST exactly match the names and data types present in the provided SOURCE_SCHEMAS. You MUST NOT reference non-existent columns, guess field names, or make assumptions about source schemas without explicitly confirming them in the schema definitions. (Rationale: Proposing guesses leads to compilation errors and invalid mapping specifications).
  • Target Schema Constraint Integrity: You must never propose a mapping that writes NULL to a column defined as NOT NULL or REQUIRED in the TARGET_SCHEMAS.
  • Exhaustive Field Search: Before declaring a target field as an "Unmapped / Gap", search all available source schemas to verify the data is not in a less-obvious table. (Rationale: Lazy mappings that default target fields to NULL lead to downstream data loss and incomplete pipelines).
  • Defensive Type Mapping: Explicitly plan the transformation rules for strict destination types (e.g. TIMESTAMP, BOOLEAN, DECIMAL) to avoid load failures. (Rationale: Different databases and platforms handle type validation strictly; pre-planning casts prevents execution-time runtime errors).
  • Data Integrity Check: Identify join conditions that could cause Cartesian product expansion or data duplication, and note prevention strategies in the plan. (Rationale: Unvalidated joins can distort aggregated metrics or exhaust processing memory on large datasets).

來源與署名

來源:gemini-cli-extensions/data-agent-kit-starter-pack位於skills/schema-mapping提交2df10e2

授權條款: Apache-2.0

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架

更多來自 gemini-cli-extensions/data-agent-kit-starter-pack 的技能

Resolving Mcp Region Configs

gemini-cli-extensions

修復區域性 Google Cloud MCP 伺服器設定中未取代的區域佔位符,讓缺少的 MCP 工具得以註冊。

DevOps & Cloud215今天更新

Notebook Guidance

gemini-cli-extensions

This skill guides the use of Jupyter notebooks for data analysis, exploration, and visualization, particularly with BigQuery. It outlines best practices for notebook execution and validation (supporting both cell-by-cell execution and full notebook generation depending on tool availability), library installation, and structuring notebooks for clarity. It also covers specific rules for data cleaning, plotting, and integrating with BigQuery SQL and machine learning workflows. Relevant when any of the following conditions are true: 1. The user request involves a data analysis, data exploration, data visualization, or data insights task that requires multiple steps, queries, or visualizations to answer. 2. The user explicitly requests a notebook (.ipynb). 3. You are creating, editing, or executing cells in a Jupyter notebook. 4. You need to query BigQuery from within a notebook. DO NOT use the Python BigQuery client library; instead, you MUST use the `%%bqsql` magics explained in this skill.

待分類215今天更新

Ml Best Practices

gemini-cli-extensions

為機器學習筆記本提供逐步方案,涵蓋分群、預測、分類、迴歸與模型比較。

Data & Analytics215今天更新

Managing Python Dependencies

gemini-cli-extensions

指導代理偵測 Python 專案的相依性管理器並正確安裝套件,而不是使用全域 pip。

Software Development215今天更新

Google Cloud Storage Fuse

gemini-cli-extensions

Mounts Cloud Storage buckets as a POSIX file system with Cloud Storage FUSE (gcsfuse). Use when you need to interact with gcsfuse — decide whether FUSE, native gs:// reads, or Filestore/Managed Lustre fits a workload, deploy tuned mounts on GKE, Compute Engine, or Cloud Run, enable and size the file, stat, and list caches, tune mount flags or config-file settings, apply workload profiles, keep ML checkpointing safe (rename atomicity, hierarchical namespace, close-time finalization, concurrent writers), or diagnose slow training, low throughput, or GCS bill spikes on existing mounts with gcsfuse metrics. Covers mount semantics, the gcsfuse CLI and config file, the GKE gcsfuse CSI driver (Workload Identity principal:// bindings, profile StorageClasses, sidecar sizing), and Cloud Run volume mounts. Don't use for bucket administration or data management without a mount (google-cloud-storage-basics) or for fully POSIX-compliant shared file systems (Filestore, Managed Lustre).

待分類215今天更新

Google Cloud Auth Verification

gemini-cli-extensions

Mandatory Step 0 pre-flight execution order and authentication verification for Google Cloud Platform (GCP), Application Default Credentials (ADC), gcloud CLI, Spark, Dataproc, BigQuery, GCS, and notebook runtimes. Use whenever interacting with GCP resources, running Spark/PySpark pipelines, BigQuery queries, GCS paths (gs://), or creating/running notebooks.

待分類215今天更新