|
| 1 | +--- |
| 2 | +name: snowflake-semanticview |
| 3 | +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. |
| 4 | +--- |
| 5 | + |
| 6 | +# Snowflake Semantic Views |
| 7 | + |
| 8 | +## One-Time Setup |
| 9 | + |
| 10 | +- Verify Snowflake CLI installation by opening a new terminal and running `snow --help`. |
| 11 | +- 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. |
| 12 | +- Configure a Snowflake connection with `snow connection add` per https://docs.snowflake.com/en/developer-guide/snowflake-cli/connecting/configure-connections#add-a-connection. |
| 13 | +- Use the configured connection for all validation and execution steps. |
| 14 | + |
| 15 | +## Workflow For Each Semantic View Request |
| 16 | + |
| 17 | +1. Confirm the target database, schema, role, warehouse, and final semantic view name. |
| 18 | +2. Confirm the model follows a star schema (facts with conformed dimensions). |
| 19 | +3. Draft the semantic view DDL using the official syntax: |
| 20 | + - https://docs.snowflake.com/en/sql-reference/sql/create-semantic-view |
| 21 | +4. Populate synonyms and comments for each dimension, fact, and metric: |
| 22 | + - Read Snowflake table/view/column comments first (preferred source): |
| 23 | + - https://docs.snowflake.com/en/sql-reference/sql/comment |
| 24 | + - 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. |
| 25 | +5. Create a temporary validation name (for example, append `__tmp_validate`) while keeping the same database and schema. |
| 26 | +6. Always validate by sending the DDL to Snowflake via Snowflake CLI before finalizing: |
| 27 | + - Use `snow sql` to execute the statement with the configured connection. |
| 28 | + - If flags differ by version, check `snow sql --help` and use the connection option shown there. |
| 29 | +7. If validation fails, iterate on the DDL and re-run the validation step until it succeeds. |
| 30 | +8. Apply the final DDL (create or alter) using the real semantic view name. |
| 31 | +9. Clean up any temporary semantic view created during validation. |
| 32 | + |
| 33 | +## Synonyms And Comments (Required) |
| 34 | + |
| 35 | +- Use the semantic view syntax for synonyms and comments: |
| 36 | + |
| 37 | +``` |
| 38 | +WITH SYNONYMS [ = ] ( 'synonym' [ , ... ] ) |
| 39 | +COMMENT = 'comment_about_dim_fact_or_metric' |
| 40 | +``` |
| 41 | + |
| 42 | +- Treat synonyms as informational only; do not use them to reference dimensions, facts, or metrics elsewhere. |
| 43 | +- Use Snowflake comments as the preferred and first source for synonyms and comments: |
| 44 | + - https://docs.snowflake.com/en/sql-reference/sql/comment |
| 45 | +- 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. |
| 46 | +- Do not invent synonyms or comments without user approval. |
| 47 | + |
| 48 | +## Validation Pattern (Required) |
| 49 | + |
| 50 | +- Never skip validation. Always execute the DDL against Snowflake with Snowflake CLI before presenting it as final. |
| 51 | +- Prefer a temporary name for validation to avoid clobbering the real view. |
| 52 | + |
| 53 | +## Example CLI Validation (Template) |
| 54 | + |
| 55 | +```bash |
| 56 | +# Replace placeholders with real values. |
| 57 | +snow sql -q "<CREATE OR ALTER SEMANTIC VIEW ...>" --connection <connection_name> |
| 58 | +``` |
| 59 | + |
| 60 | +If the CLI uses a different connection flag in your version, run: |
| 61 | + |
| 62 | +```bash |
| 63 | +snow sql --help |
| 64 | +``` |
| 65 | + |
| 66 | +## Notes |
| 67 | + |
| 68 | +- Treat installation and connection setup as one-time steps, but confirm they are done before the first validation. |
| 69 | +- Keep the final semantic view definition identical to the validated temporary definition except for the name. |
| 70 | +- Do not omit synonyms or comments; consider them required for completeness even if optional in syntax. |
0 commit comments