diff --git a/skills/.curated/snowflake-create-sem-view/LICENSE.txt b/skills/.curated/snowflake-create-sem-view/LICENSE.txt new file mode 100644 index 0000000..755a9c2 --- /dev/null +++ b/skills/.curated/snowflake-create-sem-view/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Miguel P Z + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/skills/.curated/snowflake-create-sem-view/SKILL.md b/skills/.curated/snowflake-create-sem-view/SKILL.md new file mode 100644 index 0000000..17d1604 --- /dev/null +++ b/skills/.curated/snowflake-create-sem-view/SKILL.md @@ -0,0 +1,70 @@ +--- +name: snowflake-semantic-views +description: Create, alter, and validate Snowflake semantic views using Snowflake CLI (snow). Use when asked to build or troubleshoot semantic views/semantic layer definitions with CREATE/ALTER SEMANTIC VIEW, to validate semantic-view DDL against Snowflake via CLI, or to guide Snowflake CLI installation and connection setup. +--- + +# Snowflake Semantic Views + +## One-Time Setup + +- Verify Snowflake CLI installation by opening a new terminal and running `snow --help`. +- If Snowflake CLI is missing or the user cannot install it, direct them to https://docs.snowflake.com/en/developer-guide/snowflake-cli/installation/installation. +- Configure a Snowflake connection with `snow connection add` per https://docs.snowflake.com/en/developer-guide/snowflake-cli/connecting/configure-connections#add-a-connection. +- Use the configured connection for all validation and execution steps. + +## Workflow For Each Semantic View Request + +1. Confirm the target database, schema, role, warehouse, and final semantic view name. +2. Confirm the model follows a star schema (facts with conformed dimensions). +3. Draft the semantic view DDL using the official syntax: + - https://docs.snowflake.com/en/sql-reference/sql/create-semantic-view +4. Populate synonyms and comments for each dimension, fact, and metric: + - Read Snowflake table/view/column comments first (preferred source): + - https://docs.snowflake.com/en/sql-reference/sql/comment + - If comments or synonyms are missing, ask whether you can create them, whether the user wants to provide text, or whether you should draft suggestions for approval. +5. Create a temporary validation name (for example, append `__tmp_validate`) while keeping the same database and schema. +6. Always validate by sending the DDL to Snowflake via Snowflake CLI before finalizing: + - Use `snow sql` to execute the statement with the configured connection. + - If flags differ by version, check `snow sql --help` and use the connection option shown there. +7. If validation fails, iterate on the DDL and re-run the validation step until it succeeds. +8. Apply the final DDL (create or alter) using the real semantic view name. +9. Clean up any temporary semantic view created during validation. + +## Synonyms And Comments (Required) + +- Use the semantic view syntax for synonyms and comments: + +``` +WITH SYNONYMS [ = ] ( 'synonym' [ , ... ] ) +COMMENT = 'comment_about_dim_fact_or_metric' +``` + +- Treat synonyms as informational only; do not use them to reference dimensions, facts, or metrics elsewhere. +- Use Snowflake comments as the preferred and first source for synonyms and comments: + - https://docs.snowflake.com/en/sql-reference/sql/comment +- If Snowflake comments are missing, ask whether you can create them, whether the user wants to provide text, or whether you should draft suggestions for approval. +- Do not invent synonyms or comments without user approval. + +## Validation Pattern (Required) + +- Never skip validation. Always execute the DDL against Snowflake with Snowflake CLI before presenting it as final. +- Prefer a temporary name for validation to avoid clobbering the real view. + +## Example CLI Validation (Template) + +```bash +# Replace placeholders with real values. +snow sql -q "" --connection +``` + +If the CLI uses a different connection flag in your version, run: + +```bash +snow sql --help +``` + +## Notes + +- Treat installation and connection setup as one-time steps, but confirm they are done before the first validation. +- Keep the final semantic view definition identical to the validated temporary definition except for the name. +- Do not omit synonyms or comments; consider them required for completeness even if optional in syntax.