1 line
3.8 KiB
JSON
1 line
3.8 KiB
JSON
{"content": "---\nallowed-tools: Bash, Read\ndescription: 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.\n---\n\n# Snowflake Semantic Views\n\n## One-Time Setup\n\n- Verify Snowflake CLI installation by opening a new terminal and running `snow --help`.\n- 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.\n- Configure a Snowflake connection with `snow connection add` per https://docs.snowflake.com/en/developer-guide/snowflake-cli/connecting/configure-connections#add-a-connection.\n- Use the configured connection for all validation and execution steps.\n\n## Workflow For Each Semantic View Request\n\n1. Confirm the target database, schema, role, warehouse, and final semantic view name.\n2. Confirm the model follows a star schema (facts with conformed dimensions).\n3. Draft the semantic view DDL using the official syntax:\n - https://docs.snowflake.com/en/sql-reference/sql/create-semantic-view\n4. Populate synonyms and comments for each dimension, fact, and metric:\n - Read Snowflake table/view/column comments first (preferred source):\n - https://docs.snowflake.com/en/sql-reference/sql/comment\n - 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.\n5. Create a temporary validation name (for example, append `__tmp_validate`) while keeping the same database and schema.\n6. Always validate by sending the DDL to Snowflake via Snowflake CLI before finalizing:\n - Use `snow sql` to execute the statement with the configured connection.\n - If flags differ by version, check `snow sql --help` and use the connection option shown there.\n7. If validation fails, iterate on the DDL and re-run the validation step until it succeeds.\n8. Apply the final DDL (create or alter) using the real semantic view name.\n9. Clean up any temporary semantic view created during validation.\n\n## Synonyms And Comments (Required)\n\n- Use the semantic view syntax for synonyms and comments:\n\n```\nWITH SYNONYMS [ = ] ( 'synonym' [ , ... ] )\nCOMMENT = 'comment_about_dim_fact_or_metric'\n```\n\n- Treat synonyms as informational only; do not use them to reference dimensions, facts, or metrics elsewhere.\n- Use Snowflake comments as the preferred and first source for synonyms and comments:\n - https://docs.snowflake.com/en/sql-reference/sql/comment\n- 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.\n- Do not invent synonyms or comments without user approval.\n\n## Validation Pattern (Required)\n\n- Never skip validation. Always execute the DDL against Snowflake with Snowflake CLI before presenting it as final.\n- Prefer a temporary name for validation to avoid clobbering the real view.\n\n## Example CLI Validation (Template)\n\n```bash\n# Replace placeholders with real values.\nsnow sql -q \"<CREATE OR ALTER SEMANTIC VIEW ...>\" --connection <connection_name>\n```\n\nIf the CLI uses a different connection flag in your version, run:\n\n```bash\nsnow sql --help\n```\n\n## Notes\n\n- Treat installation and connection setup as one-time steps, but confirm they are done before the first validation.\n- Keep the final semantic view definition identical to the validated temporary definition except for the name.\n- Do not omit synonyms or comments; consider them required for completeness even if optional in syntax.\n"} |