bigquery-sql
BigQuery-specific SQL patterns: UNNEST for array expansion, STRUCT, ARRAY_AGG,…
Snowflake-specific SQL patterns: QUALIFY for window filtering, LATERAL FLATTEN for arrays, semi-structured VARIANT data, ILIKE for case-insensitive matching, date functions, and time travel.
$ npx -y skills add signalpilot-labs/signalpilot --skill snowflake-sql --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/snowflake-sqlContext preview
The summary Claude sees to decide when to auto-load this skill.
Snowflake-specific SQL patterns: QUALIFY for window filtering, LATERAL FLATTEN for arrays, semi-structured VARIANT data, ILIKE for case-insensitive matching, date functions, and time travel.
name: snowflake-sql description: "Snowflake-specific SQL patterns: QUALIFY for window filtering, LATERAL FLATTEN for arrays, semi-structured VARIANT data, ILIKE for case-insensitive matching, date functions, and time travel." type: skill
Instead of wrapping in a subquery, use QUALIFY:
-- Find the latest record per customer SELECT customer_id, order_date, amount FROM orders QUALIFY ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY order_date DESC) = 1; -- Top 5 products by sales SELECT product_id, total_sales FROM sales_summary QUALIFY DENSE_RANK() OVER (ORDER BY total_sales DESC) <= 5;
-- Case-insensitive LIKE WHERE product_name ILIKE '%widget%' -- Case-insensitive equality WHERE UPPER(status) = 'ACTIVE' -- or WHERE status ILIKE 'active'
-- Explode an ARRAY column SELECT t.id, f.value AS item FROM table t, LATERAL FLATTEN(input => t.array_col) f; -- Access VARIANT fields SELECT col:field_name::STRING AS field_value FROM table; -- Parse JSON string SELECT PARSE_JSON(json_col):key::STRING AS val FROM table;
-- Add/subtract time
DATEADD(day, 7, order_date) -- 7 days from order_date
DATEADD(month, -1, current_date()) -- 1 month ago
-- Difference between dates
DATEDIFF(day, start_date, end_date) -- days between dates
DATEDIFF(month, start_date, end_date)
-- Truncate to period
DATE_TRUNC('month', event_ts)
DATE_TRUNC('year', event_ts)
-- Current timestamp
CURRENT_TIMESTAMP()
CURRENT_DATE()SPLIT_PART(col, '/', 1) -- split by delimiter, get Nth part REGEXP_SUBSTR(col, '[0-9]+') -- first match of regex TRIM(col) -- remove leading/trailing whitespace LTRIM(col, '0') -- remove leading zeros UPPER(col) / LOWER(col) CONCAT(col1, '-', col2) -- or col1 || '-' || col2
-- NULL-safe: TRUE when both are NULL or both equal col1 IS NOT DISTINCT FROM col2 -- COALESCE for default values COALESCE(col, 'unknown')
-- Query table as it was 1 hour ago SELECT * FROM my_table AT (OFFSET => -3600); -- Query at a specific timestamp SELECT * FROM my_table AT (TIMESTAMP => '2024-01-01'::TIMESTAMP);
Repo: signalpilot-labs/signalpilot
BigQuery-specific SQL patterns: UNNEST for array expansion, STRUCT, ARRAY_AGG,…
Load when dbt run or dbt parse fails. Covers YML duplicate patches, ref errors, passthrough…
Populate the knowledge base from dbt project research. Proposes entries across all 6…
Load when task involves dbt snapshots, SCD Type 2, or tracking data changes over time. Covers…
Load when task involves adding, writing, or fixing dbt unit tests. Covers unit_tests YAML…
Load when task involves dbt model versioning, creating v2 of a model, or backward-compatible…