Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
4a18261
docs(cli): remove the load, open, and replace commands
MariaJoseFF Aug 14, 2026
7168ee1
docs(cli): post-cherry-pick fix-ups for the removed-commands note
gronnerup Sep 4, 2026
5331469
docs(cli): preview end date is 2026-10-31
gronnerup Sep 4, 2026
44f4007
docs(cli): rewrite the command reference for the 0.7.0 surface
gronnerup Sep 4, 2026
cd2f4ba
docs(cli): new Findings JSON page for the unified envelope
gronnerup Sep 4, 2026
6c7de39
docs(cli): interactive and configuration pages for 0.7.0
gronnerup Sep 4, 2026
84251e0
docs(cli): auth and automation pages for 0.7.0
gronnerup Sep 4, 2026
fb4ecba
docs(cli): CI/CD and limitations pages for 0.7.0
gronnerup Sep 4, 2026
2551654
docs(cli): migration and AI-skill pages for 0.7.0
gronnerup Sep 4, 2026
77fc945
docs(cli): overview and install pages for 0.7.0
gronnerup Sep 4, 2026
595afea
docs(cli): verification sweep fixes on the TE2 comparison table
gronnerup Sep 4, 2026
5052976
Update CLI screenshots
gronnerup Sep 7, 2026
df7c050
Update te-cli-migrate docs
gronnerup Sep 10, 2026
3651d64
docs(cli): correct the relationship path form and drop the GUID claim…
MariaJoseFF Sep 10, 2026
ca1b97f
Final update of docs based on latest 0.7.0 release
gronnerup Sep 11, 2026
d5029a8
Merge branch 'user-pg/cli-0.7.0' of https://github.com/TabularEditor/…
gronnerup Sep 11, 2026
7a440b4
docs(cli): refresh CLI pages for 0.7.0 release notes since 2026-09-04
gronnerup Sep 11, 2026
cdad818
Changes bsed on first round of review on the 0.7.0 docs
gronnerup Sep 11, 2026
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
Binary file modified content/assets/images/features/cli/cli-command-ls.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified content/assets/images/features/cli/cli-interactive-mode.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified content/assets/images/features/cli/cli-preview-notice.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
64 changes: 43 additions & 21 deletions content/features/Command-line-Options.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,50 +27,72 @@ Running `TabularEditor.exe` in a CI/CD pipeline does not require a Tabular Edito

## TabularEditor.exe vs. the Tabular Editor CLI

The Tabular Editor CLI (`te`) is the cross-platform successor to `TabularEditor.exe`. It's not just a rewrite for macOS and Linux - it adds model editing, inspection, diffing, testing, refresh triggering, and VertiPaq analysis as first-class pipeline operations, none of which were possible with `TabularEditor.exe`. The `te` CLI is in Limited Public Preview (expires 2026-09-30); use `TabularEditor.exe` for production pipelines today.
The Tabular Editor CLI (`te`) is the cross-platform successor to `TabularEditor.exe`. It's not just a rewrite for macOS and Linux - it adds model editing, inspection, diffing, testing, refresh triggering, and VertiPaq analysis as first-class pipeline operations, none of which were possible with `TabularEditor.exe`. The `te` CLI is in Limited Public Preview (expires 2026-10-31); use `TabularEditor.exe` for production pipelines today.

| | TE2 CLI (`TabularEditor.exe`) | TE CLI (`te`) |
#### At a glance

| Aspect | TE2 CLI (`TabularEditor.exe`) | TE CLI (`te`) |
|---|---|---|
| Status | Stable, production-ready | Limited Public Preview (expires 2026-09-30) |
| Status | Stable, production-ready | Limited Public Preview (expires 2026-10-31) |
| Platform | Windows only | Windows, macOS, Linux |
| License required | No | No (preview); TBD at GA |
| Binary | WinForms app, requires `start /wait` wrapper | Purpose-built console binary, no wrapper needed |
| **Authentication** | | |

#### Authentication

| Capability | TE2 CLI (`TabularEditor.exe`) | TE CLI (`te`) |
|---|---|---|
| Service Principal | Via MSOLAP connection string | Native `--auth spn`, `--auth env`, `--auth managed-identity`; credentials via env vars, stdin, or certificate; OS-native secure credential store |
| Managed identity | No | Yes (`--auth managed-identity`), for Azure-hosted runners |
| Interactive browser login | No | Yes (`te auth login`) |
| **CI/CD** | | |

#### CI/CD

| Capability | TE2 CLI (`TabularEditor.exe`) | TE CLI (`te`) |
|---|---|---|
| CI annotations | `-V` (Azure DevOps), `-G` (GitHub) | `--ci vsts`, `--ci github` on every command |
| Non-interactive mode | No explicit flag; errors may prompt | `--non-interactive` global flag - fails fast, no prompts |
| Predictable exit codes | Partial | `0` = success, `1` = failure, `2` = diff mismatch |
| Predictable exit codes | Partial | `0` = success, `1` = failure (for `te diff`: differences found), `2` = `te diff` comparison error |
| Structured output | No | `--output-format json/csv/tmdl/tmsl` on every command |
| VSTEST results | `-T` flag | `--trx <file>` on `validate`, `bpa run`, `test run` |
| **Deployment** | | |

#### Deployment

| Capability | TE2 CLI (`TabularEditor.exe`) | TE CLI (`te`) |
|---|---|---|
| Deploy model | `-D` flag | `te deploy` with fine-grained flags (`--deploy-roles`, `--deploy-partitions`, `--deploy-connections`, `--deploy-full`, etc.) |
| Generate XMLA/TMSL without deploying | `-X` flag | `te deploy --xmla <file>` or `--dry-run` |
| Generate XMLA/TMSL without deploying | `-X` flag | The default: `te deploy` without `--execute` prints the TMSL to stdout |
| BPA gate before deploy | No | Built-in; `--skip-bpa` or `--fix-bpa` to override |
| Connection profiles | No | `te profile set/list/show` - reusable named profiles per environment |
| **Best Practice Analyzer** | | |

#### Best Practice Analyzer and model editing

| Capability | TE2 CLI (`TabularEditor.exe`) | TE CLI (`te`) |
|---|---|---|
| Run BPA | `-A` / `-AX` flags | `te bpa run` with `--fail-on warning/error`, `--fix`, `--path` scoping, `--vpax` for VPA-aware rules |
| BPA rule management | No | `te bpa rules add/rm/set/list/disable/enable/init` |
| **Model editing in pipeline** | | |
| Run C# scripts | `-S` flag | `te script` - multiple scripts, inline code, stdin, `--dry-run`, preprocessor symbols (`TECLI`) |
| Run C# scripts | `-S` flag | `te script` - multiple scripts, inline code, stdin, `--validate` compile check, preprocessor symbols (`TECLI`) |
| Run macros | No | `te macro run` with `--on <object>` context |
| Set/get properties | No | `te get`, `te set`, `te add`, `te rm`, `te mv`, `te replace` |
| DAX formatting | No | `te format` - all expressions or single object, DAX and M |
| **Inspection** | | |
| Set/get properties | No | `te get`, `te set`, `te add`, `te rm`, `te mv` |
| DAX formatting | No | `te set --format` for model objects, `te util format-dax` / `format-m` for loose expressions |

#### Inspection, refresh, testing and VertiPaq analysis

| Capability | TE2 CLI (`TabularEditor.exe`) | TE CLI (`te`) |
|---|---|---|
| List model objects | No | `te ls` with wildcard path filters, `--type`, `--paths-only`, `--output-format bim` |
| Search expressions/names | No | `te find` with regex and scope (`--in expressions/names/descriptions`) |
| Diff two models | No | `te diff` - structural comparison with exit code `2` on any difference |
| Diff two models | No | `te diff` - structural comparison with exit code `1` on any difference |
| Dependency analysis | No | `te deps` - upstream/downstream for any object; `--unused` to find dead code |
| **Refresh** | | |
| Trigger refresh | No | `te refresh` with `--type`, `--table`, `--partition`, `--apply-refresh-policy`, `--dry-run` |
| **Testing** | | |
| Trigger refresh | No | `te refresh` with `--type`, `--table`, `--partition`, `--apply-refresh-policy`; dry run by default, `--execute` to run |
| DAX assertion tests | No | `te test run` with `--tag`, `--trx`, `--ci`; `te test init/snapshot/compare` |
| **VertiPaq analysis** | | |
| Storage statistics | No | `te vertipaq` - columns, relationships, partitions; `--export`/`--import` VPAX |
| **Other** | | |
| Interactive REPL | No | `te interactive` - model-aware shell with tab completion |

#### Other

| Capability | TE2 CLI (`TabularEditor.exe`) | TE CLI (`te`) |
|---|---|---|
| Interactive REPL | No | `te interactive` - model-aware shell with persistent history and staged edits |
| Shell tab completion | No | `te completion bash/zsh/pwsh` |
| TE2 backward compatibility | Native | Built-in compatibility layer - existing `TabularEditor.exe` invocations work unchanged |

Expand Down
2 changes: 1 addition & 1 deletion content/features/te-cli/includes/te-cli-preview-notice.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
> [!IMPORTANT]
> The Tabular Editor CLI is in **Limited Public Preview**. It is offered for evaluation with a Tabular Editor account; no license is required during preview. Commands, flags, and outputs may change before general availability. **The preview build stops functioning after 2026-09-30.** We recommend against using the CLI in production CI/CD pipelines during preview.
> The Tabular Editor CLI is in **Limited Public Preview**. It is offered for evaluation with a Tabular Editor account; no license is required during preview. Commands, flags, and outputs may change before general availability. **The preview build stops functioning after 2026-10-31.** We recommend against using the CLI in production CI/CD pipelines during preview.
24 changes: 17 additions & 7 deletions content/features/te-cli/te-cli-auth.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
uid: te-cli-auth
title: Authentication and Connections
author: Peer Grønnerup
updated: 2026-06-11
updated: 2026-09-11
applies_to:
products:
- product: Tabular Editor 2
Expand Down Expand Up @@ -36,6 +36,9 @@ The CLI supports the full Azure Identity credential chain:

For headless, SSH, WSL, or devcontainer scenarios, use a service principal - `te auth login -u <id> -p <secret> -t <tenant>` (or `--certificate`). The login is cached, so subsequent commands acquire tokens silently with `--auth auto`.

> [!NOTE]
> The schema-detection flags on `te add -t Table` and `te set --update-schema` (`--source sql`, `--endpoint`) sign in with Entra ID for Azure-family SQL endpoints (`*.database.windows.net`, `*.datawarehouse.fabric.microsoft.com`, `*.sql.azuresynapse.net`) and honor `--auth`. On-prem servers use Windows-integrated authentication; `--connection-string` is honored verbatim.

## `te auth login`

Authenticate and cache the result for subsequent commands:
Expand Down Expand Up @@ -107,11 +110,12 @@ te connect my-workspace my-model
# Local TMDL folder, .bim file, or .SemanticModel container
te connect ./my-model

# Connect to a running Power BI Desktop instance (Windows only)
# Connect to a locally running Analysis Services instance
# (Power BI Desktop, Visual Studio workspace, standalone SSAS - Windows only)
te connect --local

# Filter by report name when multiple Power BI Desktop instances are running
te connect --local my-report
# Match an instance (e.g. an open report's window title) or a database name
te connect --local my-model

# Show the active connection
te connect
Expand All @@ -120,7 +124,9 @@ te connect
te connect --clear
```

Active-connection state is per-terminal-session: opening a new terminal starts fresh. Inspect or clean up session state with [`te session`](xref:te-cli-commands#session).
When several local instances or databases are found, the CLI prompts in two steps (instance, then database); with `--non-interactive` it fails with the candidate list instead of picking silently.

Active-connection state is per-terminal-session: opening a new terminal starts fresh. Inspect or clean up session state with [`te session`](xref:te-cli-commands#session). For `te deploy`, the active connection also serves as the default `--target-server`/`--target-database` when the model source is local.

### Workspace mode (`-w` / `--workspace`)

Expand Down Expand Up @@ -170,7 +176,7 @@ te profile show prod
te connect --profile prod

# One-shot use without changing the active connection
te deploy ./model --profile staging --force
te deploy --model ./model --profile staging --execute --force
```

Profiles can also carry behavioral overrides that take effect whenever the profile is active:
Expand All @@ -192,16 +198,20 @@ For CI/CD pipelines, agents, or any unattended context, avoid interactive flows
- The `--non-interactive` global flag (fails fast instead of prompting).
- One of the non-interactive auth methods: `env`, `managed-identity`, or explicit service principal credentials.

With `--non-interactive` and nothing to sign in with - no cached login, no `AZURE_CLIENT_*` variables, no managed identity - a command that connects to a workspace or server stops immediately, never opens a browser, and reports that no credentials are available, naming every way to supply them: `te auth login`, a service principal cached with `te auth login -u <client-id> -p <secret> -t <tenant>`, `--auth env`, or `--auth managed-identity`. A cached service principal is used silently, so only runs with genuinely nothing to sign in with fail this way.

Environment-based example for a pipeline:

```bash
export AZURE_CLIENT_ID="your-app-id"
export AZURE_CLIENT_SECRET="your-client-secret"
export AZURE_TENANT_ID="your-tenant-id"

te deploy ./model -s my-workspace -d my-model \
te deploy --model ./model \
--target-server my-workspace --target-database my-model \
--auth env \
--non-interactive \
--execute \
--force \
--ci github
```
Expand Down
Loading
Loading