Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
194 changes: 194 additions & 0 deletions content/features/built-in-bpa-rules.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@
---
uid: built-in-bpa-rules
title: Built-in BPA Rules
author: Morten Lønskov
updated: 2026-01-09
applies_to:
products:
- product: Tabular Editor 2
none: true
- product: Tabular Editor 3
since: 3.24.0
editions:
- edition: Desktop
none: true
- edition: Business
none: true
- edition: Enterprise
full: true
description: Enterprise Edition feature providing 27 curated best practice rules hardcoded into Tabular Editor 3 with knowledge base integration.
---

# Built-in BPA Rules

## Overview

Tabular Editor 3 Enterprise Edition includes 27 built-in best practice rules. These rules cover common issues in semantic model development and are updated automatically with each release.

Unlike custom rules stored in JSON files, built-in rules:
- Are integrated directly into the application
- Update automatically with new releases
- Link to knowledge base documentation
- Are read-only to ensure consistency across teams
- Work immediately without configuration

## Key Features

### Rule Categories

The 27 built-in rules cover four areas:
- **Error Prevention**: Invalid characters, missing expressions, data type mismatches
- **Performance**: Relationships, partitions, aggregations
- **Formatting**: Format strings, visibility, naming conventions
- **Maintenance**: Descriptions, calculation groups, unused objects

### Global and Per-Rule Control
<!--
![Placeholder: Screenshot showing BPA preferences with global enable/disable toggle and per-rule checkboxes](~/content/assets/images/features/bpa-built-in-rules-preferences.png)
-->
You can enable or disable built-in rules globally or individually. Settings persist across sessions and work independently from your custom rules.

To manage built-in rules:
1. Go to **Tools** > **Preferences** > **Best Practice Analyzer**
2. Find the **Built-in Rules** section
3. Toggle **Enable Built-in Rules** to turn the entire collection on or off
4. Use the BPA Manager to enable or disable individual rules

### Enterprise-Only Access

Built-in BPA Rules require Enterprise Edition. If you're using Desktop or Business Edition, you can still use custom BPA rules but won't see the built-in rules.

### First-Run Notification
<!--<!--
![Placeholder: Screenshot of first-run notification dialog introducing built-in BPA rules](~/content/assets/images/features/bpa-built-in-rules-notification.png)
-->
The first time you open a model after upgrading to a version with built-in rules, you'll see a notification explaining the feature with a link to preferences. This notification only appears once.

### Knowledge Base Integration

<!--
![Placeholder: Screenshot showing BPA window with rule selected and "View Documentation" button highlighted](~/content/assets/images/features/bpa-built-in-rules-kb-link.png)
-->
Every built-in rule links to a knowledge base article through the `KnowledgeBaseArticle` property. Each article explains what the rule checks, why it matters, and how to fix violations.

To view documentation, select a rule in the Best Practice Analyzer window.


### Read-Only Protection

Built-in rules can't be edited, cloned, or deleted. This ensures all users have the same rule definitions. You can disable individual rules, but the rule definitions themselves remain unchanged.

<!--
![Placeholder: Screenshot showing built-in rule with read-only badge/icon in BPA window](~/content/assets/images/features/bpa-built-in-rules-readonly.png)
-->
### ID Collision Prevention

Built-in rules use reserved ID prefixes. When you create a custom rule, Tabular Editor validates that your ID doesn't conflict with built-in rules and shows an error if it does.

## Built-in Rules Catalog

The initial release includes the following rules:

<!--
### Error Prevention Rules
- [Avoid Invalid Characters in Object Names](xref:kb.bpa-avoid-invalid-characters-names)
- [Avoid Invalid Characters in Descriptions](xref:kb.bpa-avoid-invalid-characters-descriptions)
- [Expression Required for Calculated Objects](xref:kb.bpa-expression-required)
- [Data Column Must Have Source](xref:kb.bpa-data-column-source)
- [Relationship Columns Must Have Same Data Type](xref:kb.bpa-relationship-same-datatype)
- [Avoid Provider Partitions with Structured Data Sources](xref:kb.bpa-avoid-provider-partitions-structured)

### Performance Rules
- [Many-to-Many Relationships Should Use Single Direction](xref:kb.bpa-many-to-many-single-direction)
- [Hide Foreign Key Columns](xref:kb.bpa-hide-foreign-keys)
- [Set SummarizeBy to None for Numeric Columns](xref:kb.bpa-do-not-summarize-numeric)
- [Remove Auto Date Tables](xref:kb.bpa-remove-auto-date-table)
- [Remove Unused Data Sources](xref:kb.bpa-remove-unused-data-sources)

### Formatting Rules
- [Provide Format String for Measures](xref:kb.bpa-format-string-measures)
- [Provide Format String for Numeric and Date Columns](xref:kb.bpa-format-string-columns)
- [Visible Objects Should Have Descriptions](xref:kb.bpa-visible-objects-no-description)
- [Trim Object Names](xref:kb.bpa-trim-object-names)
- [Date Table Should Exist](xref:kb.bpa-date-table-exists)

### Maintenance Rules
- [Calculation Groups Should Contain Items](xref:kb.bpa-calculation-groups-no-items)
- [Perspectives Should Contain Objects](xref:kb.bpa-perspectives-no-objects)
- [Use Latest Power BI Compatibility Level](xref:kb.bpa-powerbi-latest-compatibility)
-->

## Working with Built-in and Custom Rules

Built-in and custom rules work side by side:

| Feature | Built-in Rules | Custom Rules |
|---------|---------------|--------------|
| **Storage** | Hardcoded in application | JSON files or model annotations |
| **Updates** | Automatic with releases | Manual editing required |
| **Modification** | Read-only | Fully editable |
| **Documentation** | Integrated KB articles | User-provided descriptions |
| **Availability** | Enterprise Edition only | All editions |
| **Sharing** | Consistent across teams | Requires manual distribution |

### Recommended Workflow

1. Enable built-in rules for immediate coverage
2. Review violations and apply fixes
3. Disable rules that don't apply to your conventions
4. Add custom rules for organization-specific requirements
5. Use the "Ignore" feature for intentional violations

## Best Practices

### Onboarding Teams

When rolling out built-in rules to your team:
- Start with all rules enabled to establish a baseline
- Review violations together and agree on which rules apply
- Document why specific rules are disabled
- Add custom rules for organization-specific requirements

### Model Maintenance

- Run BPA before committing changes to version control
- Fix high-severity violations immediately
- Review medium and low-severity issues regularly
- Use automatic fixes where available

### Custom Rules

- Don't duplicate built-in rule functionality
- Use different ID prefixes to avoid conflicts
- Document your custom rules
- Share rule collections within your team

## Troubleshooting

### Built-in Rules Not Appearing

If built-in rules don't show in the BPA window:
1. Check that you're using Tabular Editor 3 Enterprise Edition
2. Verify that built-in rules are enabled in **Tools** > **Preferences** > **Best Practice Analyzer**
3. Restart Tabular Editor if you just changed preferences
4. Confirm your license is active

### Cannot Modify Built-in Rule

This is expected. Built-in rules are read-only. If you need different logic, create a custom rule with your expression and disable the corresponding built-in rule.

### ID Collision Error

Built-in rules reserve certain ID prefixes. Choose a different ID that doesn't start with `TE3_BUILT_IN`.

## Compatibility

- Requires Tabular Editor 3.24.0 or later
- Enterprise Edition only
- Works with all compatibility levels (1200+)

## Next Steps

- [Using the Best Practice Analyzer](xref:using-bpa)
- [BPA sample rules and expressions](xref:using-bpa-sample-rules-expressions)
- [Custom BPA rules](xref:best-practice-analyzer)
1 change: 1 addition & 0 deletions content/features/toc.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@

# Model Analysis and Quality
## @best-practice-analyzer
### @built-in-bpa-rules
### @using-bpa
### @using-bpa-sample-rules-expressions
## @dax-optimizer-integration
Expand Down
101 changes: 101 additions & 0 deletions content/references/Application Language.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
---
uid: references-application-language
title: Application Language
author: Morten Lønskov
updated: 2026-01-12
applies_to:
products:
- product: Tabular Editor 2
none: true
- product: Tabular Editor 3
since: 3.25.0
editions:
- edition: Desktop
full: true
- edition: Business
full: true
- edition: Enterprise
full: true
description: Change the display language for Tabular Editor 3's user interface.
---

# Application Language

Tabular Editor 3 supports multiple UI languages. You can switch between them at any time.

> [!NOTE]
Tabular Editor 3 is still not fully localized. Specifically we have so far not localized the individual TOM properties.

## Supported Languages

| Language | Status |
|----------|--------|
| English | Fully supported |
| Spanish | Preview |
| Chinese | Preview |
| French | Beta |
| German | Beta |
| Japanese | Beta |

> [!NOTE]
> **Preview** languages have core UI elements translated but may have incomplete coverage. **Beta** languages are experimental and may have significant gaps or inconsistencies. Report issues on [GitHub](https://github.com/TabularEditor/TabularEditor3/issues).

### Preview Languages
The languages under Beta support means that they have been verified by an human translator, but that Tabular Editor 3 may still not be fully localized. Specifically we have so far not localized the individual TOM properties.

### Beta Languages
Beta languages are have been translated exclusively through AI and as not been verified by human translators. We plan to bring beta languages into Preview in Q2 2026.

## Changing the Language

There are two ways to change the application language:

### Via Window Menu

1. Click **Window** > **Language**
2. Select your desired language
3. Click **OK** when prompted to restart
4. Restart Tabular Editor 3 manually

[Change Language via Window Menu](~/content/assets/images/user-interface/chaning-language-windows-ui.png)

### Via Preferences

1. Click **Tools** > **Preferences**
2. Navigate to **UI** section
3. Select your desired language from the **Language** dropdown
4. Click **OK** when prompted to restart
5. Restart Tabular Editor 3 manually

[Change Language via Window Menu](~/content/assets/images/user-interface/chaning-language-preferences.png)

## Restart Requirement

**You must restart Tabular Editor 3** for language changes to take effect. The application prompts you to restart but does not restart automatically. Save your work before changing the language.

[Change Language via Window Menu](~/content/assets/images/user-interface/chaning-language-restart-pop-up.png)

## Installation Language

During installation, the installer prompts you to select a language (English, Spanish, or Chinese). This sets your initial language preference, and Tabular Editor 3 displays in that language on first launch.

The installer writes your selection to the preferences file in your LocalAppData folder. You can change this later using either method above.

## Language Persistence

Your language preference is stored in `UiPreferences.json` in your user profile. The setting persists across application updates and restarts.

## Providing Feedback

### Translation Issues

If you find incorrect translations or missing text:

- Open an issue on [GitHub](https://github.com/TabularEditor/TabularEditor3/issues)
- Include the language, the incorrect text, and where it appears in the UI
- Suggest the correct translation if possible

## See Also

- [Preferences](xref:preferences-index)
- [User Interface Overview](xref:ui-overview)