Troubleshooting
Solutions to common issues with semantic domains for both administrators and end users
For Administrators
"Cannot resolve join plan" Error
Problem: When users select fields from multiple datasets, they see an error about unreachable datasets.
Causes:
- No relationship exists between the selected datasets
- Relationship is disabled (not set to auto-join)
- Datasets are in separate disconnected graphs
Solution:
- Check that relationships exist between all selected datasets
- Verify relationships have "Auto-Join Enabled" checked
- Use the Relationships tab to add missing relationships
- Run AI Discovery to find missing relationships
Ensure all datasets in your domain are connected through at least one relationship path. Disconnected datasets cannot be queried together.
Fields Not Showing in Dashboard
Problem: Users can't see certain fields when building charts.
Causes:
- Fields are marked as hidden
- Dataset is not added to the domain
- Field visibility is turned off
Solution:
- In the Datasets tab, edit the dataset
- Check the visibility icon (eye) for each field
- Ensure fields you want visible are not hidden
Virtual Dataset SQL Errors
Problem: Virtual datasets fail with SQL errors.
Causes:
- Invalid SQL syntax
- Trailing semicolons in SQL
- References to non-existent tables/fields
- Dialect-specific SQL not compatible with your database
Solution:
- Test your SQL query directly in a SQL client first
- Remove trailing semicolons from the SQL
- Verify all referenced tables exist in your connection
- Use standard SQL that works across dialects
Virtual datasets are executed as subqueries. Ensure your SQL is valid and returns the expected columns.
AI Discovery Returns No Suggestions
Problem: AI relationship discovery completes but finds no relationships.
Causes:
- Domain has only one dataset
- Field names don't follow common patterns
- All relationships already exist
- Insufficient data for analysis
Solution:
- Ensure you have at least 2 datasets in the domain
- Manually create one relationship as an example
- Use conventional field names (e.g.,
customer_id,order_id) - Add more datasets to provide context for the AI
Slow Query Performance
Problem: Queries using the domain take a long time to run.
Causes:
- Complex multi-hop joins
- Virtual datasets with expensive SQL
- Missing database indexes
- Too many fields selected
Solution:
- Review the generated SQL in the query log
- Ensure join keys are indexed in your database
- Simplify virtual dataset SQL
- Create intermediate materialized views for complex calculations
- Limit the number of fields users can select
Performance Optimization Tips: - Index all foreign key fields used in relationships - Use physical datasets instead of virtual when possible - Limit multi-hop joins to necessary scenarios - Consider materialized views for frequently-used join patterns
Duplicate Relationships
Problem: Multiple relationships exist between the same two datasets.
Causes:
- Different join paths for different use cases
- AI discovery created duplicates
- Composite keys defined separately
Impact: May cause ambiguous join resolution
Solution:
- Review all relationships between the dataset pair
- Delete true duplicates (exact same join keys)
- For different join paths, set different priorities
- Disable auto-join for less common paths
Relationship Not Being Used
Problem: You created a relationship but it's not being used in auto-join resolution.
Causes:
- Auto-join is disabled for the relationship
- Relationship is marked as inactive
- Another relationship has higher priority
Solution:
- Edit the relationship and ensure "Auto-Join Enabled" is checked
- Verify "Is Active" is set to true
- Check join priority - higher numbers are used first
- Save the domain after making changes
Cache Invalidation Issues
Problem: Relationship changes don't take effect immediately.
Cause: Domain cache not invalidated after updates.
Solution:
- Click "Save" in the domain editor after making changes
- Wait a few seconds for cache to clear
- Refresh the dashboard card to see updated relationships
- If issues persist, contact your system administrator
For End Users
"Why Is a Field Grayed Out?"
Problem: A field appears grayed out and cannot be dragged.
Cause: The field's dataset has no relationship path to your currently selected datasets.
What It Means:
- You've selected fields from dataset A
- The grayed-out field is from dataset B
- No relationship exists between A and B (either direct or indirect)
Solutions:
- Check with your admin: The relationship might be missing
- Clear your selection: Click "Clear All" and start with the grayed-out field's dataset as base
- Choose a different field: Find a field from a related dataset instead
- Request relationship: Ask your admin to add the relationship if it should exist
"What Does 'Auto-Resolved Join' Mean?"
Meaning: Semaphor automatically created the necessary joins between your selected datasets based on pre-defined relationships.
Why It's Good:
- You don't need to know SQL or understand joins
- Relationships are governed and consistent across all analyses
- Reduces errors from manual join configuration
How It Works:
- Admin defines relationships in the semantic domain
- You select fields from multiple datasets
- Semaphor finds the shortest join path
- Query executes with joins automatically applied
- Results return with auto-join metadata
"Why Do I See a Yellow Indicator on Some Fields?"
Meaning: The field requires a multi-hop join (2-hop) to reach from your base dataset.
Example:
- Base dataset:
orders - Yellow field:
country_namefromcountries - Join path:
orders → stores → countries
Is It Safe to Use?
- Yes! Multi-hop joins work just like direct joins
- They may be slightly slower on large datasets
- Review the auto-join panel to understand the join path
When to Be Cautious:
- Very large fact tables with complex hierarchies
- If query performance becomes an issue
- Ask your admin if you're unsure about the relationship
"How Do I Know Which Datasets Are Being Joined?"
Answer: Check the Auto-Resolved Joins panel in the Visual tab.
Where to Find It:
- In the Visual tab of the card editor
- Below the field list on the left side
- Shows a badge with the number of joins (e.g., "Auto-Resolved Joins [2]")
- Click to expand for full details
What It Shows:
- All datasets involved in the query
- Join type (INNER, LEFT, RIGHT, FULL)
- Join conditions (which fields match)
- Join sequence (order of joins)
Alternative: Hover over any field in the field list to see its join path tooltip.
"Can I Override Auto-Resolved Joins?"
Short Answer: Not directly from the field selection interface.
Explanation:
- Auto-resolved joins use the relationships defined in the semantic domain
- Join types and keys are governed by the admin's configuration
- This ensures consistency across all users and analyses
If You Need Different Join Logic:
- Ask your admin to adjust the relationship (join type, keys, priority)
- Use Manual Join Mode (if your deployment supports it) in the Joins tab
- Switch to SQL mode and write custom SQL (if you have permissions)
- Create a virtual dataset with pre-joined data
Best Practice: Work with your domain admin to refine relationships rather than overriding them. This ensures everyone benefits from improved join logic.
"What Happens If I Select Fields from Unrelated Datasets?"
Result: You'll get an error message: "Cannot resolve join plan"
Error Message Example:
What This Means:
- You tried to combine datasets with no defined relationship
- Semaphor cannot automatically determine how to join them
- The datasets might be completely unrelated (e.g., Orders and Employee Payroll)
Solutions:
- Remove unreachable fields: Deselect fields from the unreachable dataset
- Start over: Clear selection and choose related datasets
- Request relationship: If datasets should be related, ask your admin to add it
- Separate visualizations: Create two cards for unrelated datasets
Query Results Don't Match Expectations
Problem: The data in your chart doesn't look right.
Possible Causes:
- Join type is incorrect (INNER vs LEFT)
- Multi-hop join is filtering or duplicating rows
- Wrong relationship being used
Debugging Steps:
-
Check the Auto-Join Panel:
- Expand to see all joins
- Verify join types (INNER, LEFT, RIGHT, FULL)
- Ensure join keys are correct
-
Verify Join Type:
- LEFT JOIN: Includes all records from left side
- INNER JOIN: Only includes matching records
- Ask your admin if the join type should be different
-
Check Row Counts:
- Compare row count with expected results
- Look for duplicates (many-to-many joins)
- Look for missing data (INNER join filtering)
-
Review Relationships:
- Ask your admin to verify relationship cardinality
- Check if composite keys are needed
- Ensure relationship is using correct fields
If you're seeing duplicates, the relationship might be configured as one-to-many when it should be many-to-one, or vice versa.
Fields Show Wrong Data Types
Problem: A number field shows as text, or dates aren't formatted correctly.
Cause: Field configuration in the semantic domain.
Solution:
- Ask your admin to check the field configuration
- Verify the field's data type setting (String, Number, Date, etc.)
- For dates, check the date format configuration
- For measures, verify the aggregate function is set correctly
Can't Find Expected Field
Problem: You can't find a field you expect to see in the field list.
Possible Causes:
- Field is hidden by admin
- Field name is different than expected
- Field is in a different dataset
- Dataset hasn't been added to the domain
Solutions:
- Use the search bar: Search for the field by name or description
- Check different datasets: Expand all dataset groups to browse
- Ask your admin: The field might be hidden or named differently
- Request addition: If the field should exist, ask admin to add it
Slow Dashboard Loading
Problem: Cards using semantic domains load very slowly.
Causes:
- Complex multi-hop joins
- Large datasets without proper indexing
- Too many fields in visualization
- Multiple cards with different join patterns
What You Can Do:
- Simplify visualizations: Use fewer fields when possible
- Avoid unnecessary multi-hop joins: Stick to direct relationships when possible
- Add filters: Filter data to reduce query size
- Report to admin: Performance issues should be investigated by admin
What Your Admin Can Do:
- Add database indexes on join keys
- Create materialized views for common queries
- Optimize virtual dataset SQL
- Review query logs for slow joins
Common Error Messages
"Domain or current version not found"
Meaning: The semantic domain you're trying to use doesn't exist or isn't published.
Solution: Contact your admin to ensure the domain is published and accessible.
"Unauthorized"
Meaning: You don't have permission to access this semantic domain.
Solution: Contact your admin to request access to the domain.
"Cannot resolve join plan"
Meaning: Semaphor cannot find a relationship path between your selected datasets.
Solution: Either select fields from related datasets only, or ask your admin to add the missing relationship.
"Invalid field configuration"
Meaning: A field in your visualization has incorrect settings.
Solution: Remove the problematic field and try a different one, or ask your admin to fix the field configuration.
Getting Help
If you're still experiencing issues:
For Administrators:
- Check the domain configuration in the Code Editor tab
- Review query logs for error details
- Test relationships with simple queries first
- Contact Semaphor support with error details
For End Users:
- Take a screenshot of the error message
- Note which fields you were trying to use
- Share with your domain administrator
- Try a simpler query to isolate the issue
Best Practices to Avoid Issues
For Administrators:
- ✅ Test all relationships after creation
- ✅ Use AI discovery as a starting point, then refine
- ✅ Document relationship purposes in descriptions
- ✅ Set appropriate join types (LEFT vs INNER)
- ✅ Index all join key fields in your database
- ✅ Review and clean up unused relationships periodically
For End Users:
- ✅ Start with simple queries and build incrementally
- ✅ Check field states before dragging (green/yellow/gray)
- ✅ Review auto-join panel after running queries
- ✅ Ask admin for help when encountering unreachable fields
- ✅ Report performance issues to your admin
- ✅ Save working queries for future reference
Still need help? Contact your Semaphor administrator or check the Admin Setup Guide and User Guide for more information.