⚠ This page is served via a proxy. Original site: https://github.com
This service does not collect credentials or authentication data.
Skip to content
Closed
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
37 changes: 37 additions & 0 deletions .github/workflows/spellcheck.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Typo Check

on:
push:
paths:
- '**/*.md'
- 'data/common_typos.json'
- 'scripts/ci_spellcheck.py'
pull_request:
paths:
- '**/*.md'
- 'data/common_typos.json'
- 'scripts/ci_spellcheck.py'
workflow_dispatch:

# Security: Minimal permissions
permissions:
contents: read

jobs:
typocheck:
runs-on: ubuntu-latest
timeout-minutes: 5

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
persist-credentials: false

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Check for common typos
run: python scripts/ci_spellcheck.py
2 changes: 1 addition & 1 deletion content/features/CSharpScripts/csharp-script-library.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ There are also other resources online with C# Scripts that are maintained by the


## Tabular Editor Versions
The top of each article denotes script compatability in TE2.x (Tabular Editor 2) and/or TE3.x (Tabular Editor 3)
The top of each article denotes script compatibility in TE2.x (Tabular Editor 2) and/or TE3.x (Tabular Editor 3)

### Scripting with Tabular Editor as a Power BI External Tool
<br></br>
Expand Down
6 changes: 3 additions & 3 deletions content/features/Command-line-Options.md
Original file line number Diff line number Diff line change
Expand Up @@ -304,8 +304,8 @@ The command line provides various details, depending on the switches used and an
|Warning|-ANALYZE|... violates rule ...|Best Practice Analyzer results for rules of severity level 2.|
|Error|-ANALYZE|... violates rule ...|Best Practice Analyzer results for rules of severity level 3 or higher.|
|Error|-DEPLOY|Deployment failed! ...|Failure reason returned directly from Analysis Service instance (for example: Database not found, Database override not allowed, etc.)|
|Information|-DEPLOY|Unprocessed object: ...|Objects that are in state "NoData" or "CalculationNeeded" after succesful deployment. Use the -W switch to treat these as Level=Warning.|
|Warning|-DEPLOY|Object not in "Ready" state: ...|Objects that are in state "DependencyError", "EvaluationError" or "SemanticError" after succesful deployment. If using the -W switch, also includes objects in state "NoData" or "CalculationNeeded".|
|Warning|-DEPLOY|Error on X:...|Objects containing invalid DAX after succesful deployment (measures, calculated columns, calculated tables, roles). Use the -E switch to treat these as Level=Error.|
|Information|-DEPLOY|Unprocessed object: ...|Objects that are in state "NoData" or "CalculationNeeded" after successful deployment. Use the -W switch to treat these as Level=Warning.|
|Warning|-DEPLOY|Object not in "Ready" state: ...|Objects that are in state "DependencyError", "EvaluationError" or "SemanticError" after successful deployment. If using the -W switch, also includes objects in state "NoData" or "CalculationNeeded".|
|Warning|-DEPLOY|Error on X:...|Objects containing invalid DAX after successful deployment (measures, calculated columns, calculated tables, roles). Use the -E switch to treat these as Level=Error.|

If any of the "Error" level outputs are encountered, Tabular Editor will return Exit Code = 1. Otherwise 0.
4 changes: 2 additions & 2 deletions content/features/Useful-script-snippets.md
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@ var tsv = ExportProperties(Model.AllMeasures, "Name,InPerspective[Inventory]");
SaveFile(@"c:\Project\MeasurePerspectiveInventory.tsv", tsv);
```

Similarly, for translations, annotations, etc. For example, if you wanted to see all danish translations applied to tables, columns, hierarchies, levells and measures:
Similarly, for translations, annotations, etc. For example, if you wanted to see all danish translations applied to tables, columns, hierarchies, levels and measures:

```csharp
// Construct a list of objects:
Expand Down Expand Up @@ -856,7 +856,7 @@ If you are working with a Power BI-based model that uses Power Query (M) express

To solve this issue, you can run the following script on your model, to replace the power query partitions with corresponding native SQL query partitions, and to create a legacy (provider) data source on the model, which will work with Tabular Editor 2's Import Data wizard:

There are two versions of the script: The first one uses the MSOLEDBSQL provider for the created legacy data source, and hardcoded credentials. This is useful for local development. The second one uses the SQLNCLI provider, which is available on Microsoft-hosted build agents on Azure DevOps, and reads credentials and server/database names from environment variables, making the script useful for integration in Azure Pipeliens.
There are two versions of the script: The first one uses the MSOLEDBSQL provider for the created legacy data source, and hardcoded credentials. This is useful for local development. The second one uses the SQLNCLI provider, which is available on Microsoft-hosted build agents on Azure DevOps, and reads credentials and server/database names from environment variables, making the script useful for integration in Azure Pipelines.

MSOLEDBSQL version, which reads connection information from M partitions and prompts for user name and password through Azure AD:
```csharp
Expand Down
2 changes: 1 addition & 1 deletion content/features/Workspace-Database.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ If you want to use and existing database as your workspace database, simply sele

To track the workspace settings for each model in your file system, Tabular Editor 3.0 introduces a new file of type .tmuo (short for Tabular Model User Options), which will be placed next to the Model.bim or Database.json file.

The .tmuo file is just a simple json document with the following content:
The .tmuo file is just a simple JSON document with the following content:

```json
{
Expand Down
2 changes: 1 addition & 1 deletion content/features/csharp-scripts.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ Selected.Measures
.Rename("Amount", "Value");
```

This would replace any occurence of the word "Amount" with the word "Value" in the names of all currently selected measures.
This would replace any occurrence of the word "Amount" with the word "Value" in the names of all currently selected measures.
Alternatively, we may use the LINQ ForEach()-method, as described above, to include more advanced logic:

```csharp
Expand Down
2 changes: 1 addition & 1 deletion content/features/dax-editor.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ For DAX scripts and DAX queries, it is sometimes useful to include the definitio

# Inline Measure

If you want to bring the definition of a measure into the current document, the **Inline Measure** feature lets you do just that. When a row context is surronding the original measure reference, Tabular Editor automatically surrounds the measure expression with [`CALCULATE`](https://dax.guide/calculate) (which is implicit in measure references).
If you want to bring the definition of a measure into the current document, the **Inline Measure** feature lets you do just that. When a row context is surrounding the original measure reference, Tabular Editor automatically surrounds the measure expression with [`CALCULATE`](https://dax.guide/calculate) (which is implicit in measure references).

# Format DAX

Expand Down
2 changes: 1 addition & 1 deletion content/features/dax-optimizer-integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ Once you click the **OK** button, the VPAX file will be uploaded to DAX Optimize

By default, VPAX files uploaded using Tabular Editor 3 will be obfuscated. In the **Upload Model** you may toggle obfuscation on/off for new model uploads. Subsequent model version uploads will be obfuscated or not depending on the first version upload. You can also export an obfuscated VPAX file locally without uploading to DAX Optimizer through the **VertiPaq Analyzer** view. In this case, a dictionary file is generated and stored on your local machine, next to the exported .ovpax file. This dictionary file is used to deobfuscate the contents of the .ovpax file.

When obfuscated VPAX data is uploaded to the DAX Optimizer service through the **DAX Optimizer** view, Tabular Editor automatically keeps track of obfuscation dictionaries by storing them in the `%LocalAppData%\TabularEditor3\DaxOptimizer` folder on your local machine. As such, when browsing models using the **DAX Optimizer** feature in Tabular Editor 3, models are automatically deobfuscated if a suitable dictionary is found in this folder, providing a more seemless experience when using obfuscation.
When obfuscated VPAX data is uploaded to the DAX Optimizer service through the **DAX Optimizer** view, Tabular Editor automatically keeps track of obfuscation dictionaries by storing them in the `%LocalAppData%\TabularEditor3\DaxOptimizer` folder on your local machine. As such, when browsing models using the **DAX Optimizer** feature in Tabular Editor 3, models are automatically deobfuscated if a suitable dictionary is found in this folder, providing a more seamless experience when using obfuscation.

If the dictionary is not found, you will have an option to manually specify a dictionary file.

Expand Down
2 changes: 1 addition & 1 deletion content/features/dax-query.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ Unlike the [DAX Script feature](xrefid:dax-scripts), only the expression propert

The "Apply" option has also been added to the right-click context menu.

![Dax Query Apple Right Click](~/content/assets/images/features/dax_query_window/dax_query_apply_measure_right_click.png)
![Dax Query Apply Right Click](~/content/assets/images/features/dax_query_window/dax_query_apply_measure_right_click.png)

The shortcuts for these commands are:

Expand Down
2 changes: 1 addition & 1 deletion content/features/dax-scripts.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ DAX scripts can be saved as text files, using the `.te3daxs` file extension. To

The DAX script editor has all the capabilities of the DAX editor used elsewhere in Tabular Editor 3. Specifically, auto-complete, auto-formatting, calltips, etc.

In addition, to easily manage large DAX scripts, two dropdowns are displayed at the top of the DAX script view. The dropdown on the left allows you to jump between objects defined in the script, where as the dropdown on the right allows you to jump between properties on the current object.
In addition, to easily manage large DAX scripts, two dropdowns are displayed at the top of the DAX script view. The dropdown on the left allows you to jump between objects defined in the script, whereas the dropdown on the right allows you to jump between properties on the current object.

![Dax Script Navigation](~/content/assets/images/dax-script-navigation.png)

Expand Down
2 changes: 1 addition & 1 deletion content/features/import-tables.partial.md
Original file line number Diff line number Diff line change
Expand Up @@ -156,4 +156,4 @@ Using this technique, Tabular Editor 3 makes it possible to import and update ta

### Importing new tables through Analysis Services

In order to import a table from a data source otherwise not suported, you can simply copy an existing table from that data source, modify the M expression on the partition query of the copied table, then save your changes to the workspace database and update the table schema as described above.
In order to import a table from a data source otherwise not supported, you can simply copy an existing table from that data source, modify the M expression on the partition query of the copied table, then save your changes to the workspace database and update the table schema as described above.
2 changes: 1 addition & 1 deletion content/features/save-to-folder.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ The tabs General and Save-to-folder contains settings regarding the serializatio
Tabular Editor 3 has a default setting for JSON serialization and you must actively choose a different setting in serialization mode, which is also where you change to the TMDL format.
***
### Serialization Model Annotation
Tabular Editor saves the serialization settings on your model so that they will always stay the same no matter who is working on the model. This ensures that a developer's local preferences do not overwrite model's setting and lead to a unmanageable merge in your source control. You can find these annotations in the TOM Explorer properties of the Model > Annotations > TabularEditor_SerializeOptions
Tabular Editor saves the serialization settings on your model so that they will always stay the same no matter who is working on the model. This ensures that a developer's local preferences do not overwrite model's setting and lead to an unmanageable merge in your source control. You can find these annotations in the TOM Explorer properties of the Model > Annotations > TabularEditor_SerializeOptions
<br></br>
![TE3 Preferences](~/content/assets/images/common/SaveToFolderModelAnnotation.png)

Expand Down
4 changes: 2 additions & 2 deletions content/features/semantic-bridge.md
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ Because of this, we have adopted the following definitions and standards in our
### General dimensional modeling terminology

There are many terms that exist generally in discussion of a dimensional model or semantic model and also in a specific platform's object model and serialization formats.
For example, the term "measure" refers generically to a quantitative value that is aggregated in a dimensional model to represent a business metric of interest, but it also refers to a specific kind of object in both Databricks Metric Views and Tabular models; in a Metric View, a measure is a named SQL expression that defines an aggregation in the Metric View, and in a Tabular model a measure is a named DAX expression tat defines an aggregation in the Tabular model.
For example, the term "measure" refers generically to a quantitative value that is aggregated in a dimensional model to represent a business metric of interest, but it also refers to a specific kind of object in both Databricks Metric Views and Tabular models; in a Metric View, a measure is a named SQL expression that defines an aggregation in the Metric View, and in a Tabular model a measure is a named DAX expression that defines an aggregation in the Tabular model.
It is impossible to discuss the work of the Semantic Bridge without talking about multiple meanings of such words at once.
For example, we talk about translating a Metric View measure to a Tabular measure.
As such, **we always refer to an object in a specific platform's model by saying the platform and the object, e.g. "Metric View measure" or "Tabular measure"**.
Expand All @@ -209,7 +209,7 @@ We refer to the names of Metric View objects based on their representation in YA
|----------------------|-----------------|-----------------------|------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| fact | table | source | A table holding foreign keys to dimensions and quantitative values to be aggregated | a Metric View has a single fact which is unnamed and captured as the root-level `source` attribute in YAML. Tabular models do not differentiate between types of tables: whether a table is a fact can only be inferred |
| dimension | table | join | A table holding descriptive attributes and one primary key to which the fact is related | Tabular models do not differentiate, so the role of "dimension" is inferred only, as with a fact. |
| partition | parition | source (join only) | An object for data management, holding a subset of data in a table | Tabular model tables can have many partitions and must have at least one. The Metric View fact, as mentioned above is defined purely as a source, but Metric View joins also have a `source` property, which acts roughly like a partition |
| partition | partition | source (join only) | An object for data management, holding a subset of data in a table | Tabular model tables can have many partitions and must have at least one. The Metric View fact, as mentioned above is defined purely as a source, but Metric View joins also have a `source` property, which acts roughly like a partition |
| field | column | dimension | A column in a table | |
| measure | measure | measure | A quantitative value that is aggregated according to business logic in the model | Measures in a Tabular model are written in DAX, and in a Metric View in SQL |
| join or relationship | relationship | join.on or join.using | A correspondence between key fields in two tables, a foreign key in one and primary key in the other | Relationships are explicit objects in a Tabular model, and implicitly defined as a property of the `join` object in Metric View YAML |
Expand Down
8 changes: 4 additions & 4 deletions content/features/views/tom-explorer-view.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,12 +147,12 @@ The toolbar allow you to show and hide different types of objects, toggling pers
11. **Language Selector**
Allows switching between different languages for model metadata localization.

12. **Colapse All**
Collaps all nodes in the TOM Explorer tree view.
12. **Collapse All**
Collapses all nodes in the TOM Explorer tree view.

13. **Search Bar**
12. **Colapse All**
Collaps all nodes in the TOM Explorer tree view.
12. **Collapse All**
Collapses all nodes in the TOM Explorer tree view.

13. **Search Bar**
Provides real-time filtering and navigation within the TOM Explorer. Type to search across all visible model objects.
2 changes: 1 addition & 1 deletion content/features/views/user-interface.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ The **File** menu primarily contains menu items for dealing with loading and sav
![File Menu New](~/content/assets/images/file-menu-new.png)

> [!IMPORTANT]
> The **New > Model...** option is not available in Tabular Editor 3 Desktop Edition, as this edition may only be used as an External Tool for Poewr BI Desktop. [More information](xref:editions).
> The **New > Model...** option is not available in Tabular Editor 3 Desktop Edition, as this edition may only be used as an External Tool for Power BI Desktop. [More information](xref:editions).

- **Open**: Opens a submenu with options for loading a data model from various sources, as well as on option for loading any other type of file. The submenu items are:

Expand Down
2 changes: 1 addition & 1 deletion content/features/workspace-mode.partial.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ Leaving this checked, you will be prompted to connect to an instance of Analysis
> [!IMPORTANT]
> If you plan to deploy your workspace database to the Power BI Service XMLA endpoint, make sure you choose Compatibility Level 1609 (Power BI / Fabric) in the dialog above.

After entering the Analysis Services server details and (optional) credentials, you are shown a list of all databases currently reciding on the server (or for a Power BI workspace, the list of datasets deployed to the workspace):
After entering the Analysis Services server details and (optional) credentials, you are shown a list of all databases currently residing on the server (or for a Power BI workspace, the list of datasets deployed to the workspace):

![Select Workspace Database](~/content/assets/images/select-workspace-database.png)

Expand Down
Loading
Loading