Skip to content
Merged
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
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. Please refer to our license agreement.
Comment thread
gronnerup marked this conversation as resolved.
> 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.
3 changes: 3 additions & 0 deletions content/features/te-cli/te-cli-auth.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,9 @@ te connect ./my-model
# Connect to a running Power BI Desktop instance (Windows only)
te connect --local

# Filter by report name when multiple Power BI Desktop instances are running
te connect --local my-report

# Show the active connection
te connect

Expand Down
14 changes: 7 additions & 7 deletions content/features/te-cli/te-cli-automation.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@ Use `--output-format` to switch any command between text (human-readable) and ma
| `text` (default) | Human-readable use | Plain text on stdout regardless of whether the stream is a TTY or piped. |
| `json` | Machine-readable use | Always valid JSON to stdout. Use `--error-format json` if you also want machine-readable errors on stderr. |
| `csv` | Tabular results (`query`, `bpa run`, `bpa rules`, `vertipaq`, `validate`, `test`, `refresh`, `profile list`, `session list`, `find`, `replace`, `get`, `ls`) | RFC 4180 escaping. |
| `tmsl` (alias `bim`) | Whole-object TMSL/BIM serialization | Accepted by `te get` and `te ls`. |
| `tmsl` (alias `bim`) | Whole-object TMSL/BIM serialization | Accepted by `te get` and `te list`. |
| `tmdl` | Whole-object TMDL serialization | Accepted by `te get` only (single object). |

```bash
te ls --output-format json
te list --output-format json
te query -q "EVALUATE VALUES('Date'[Year])" --output-format csv
te bpa run --output-format json
```
Expand All @@ -54,7 +54,7 @@ Every `te` command exits with a predictable status code so callers can branch on
| Exit | Meaning |
| -- | -- |
| `0` | Success. |
| `1` | Generic failure - invalid arguments, command failed, validation errors, auth failure, BPA gate failed at severity error. For `te diff`: differences found (like the `diff`/`cmp` convention). |
| `1` | Generic failure - invalid arguments, command failed, validation errors, auth failure, BPA gate failed at severity >= error. For `te diff`: differences found (like the `diff`/`cmp` convention). |
| `2` | `te diff` only: an error occurred while comparing, so the difference status is unknown. |

Combine exit codes with `--ci <vsts\|github>` annotations and `--trx <file>` to surface rich failure information in CI - see @te-cli-cicd.
Expand All @@ -64,7 +64,7 @@ Combine exit codes with `--ci <vsts\|github>` annotations and `--trx <file>` to
Errors, warnings, and the preview banner are written to **stderr**; structured data is written to **stdout**. This means you can pipe JSON safely without it being contaminated by progress indicators or diagnostic messages:

```bash
te ls --output-format json | jq '.[] | .name'
te list --output-format json | jq '.[] | .name'
te vertipaq --output-format json > stats.json
```

Expand Down Expand Up @@ -151,7 +151,7 @@ Compose commands with pipes and `jq`. The CLI's text output is colorized for hum

```bash
# Count measures per table
te ls --type measure --output-format json \
te list --type measure --output-format json \
| jq -r '.[] | .table' \
| sort | uniq -c | sort -rn
```
Expand All @@ -178,10 +178,10 @@ The resulting TMSL can be reviewed in a pull request, committed, executed by the

A handful of small idioms that come up often when composing `te` commands in scripts or pipelines:

- **Idempotent creates and removes.** `te add Sales/Marker -t Measure -i "0" --if-not-exists --save` and `te rm Sales/OldMeasure --if-exists --save` both exit `0` whether or not the object existed - safe to re-run in CI.
- **Idempotent creates and removes.** `te add Sales/Marker -t Measure -i "0" --if-not-exists --save` and `te remove Sales/OldMeasure --if-exists --save` both exit `0` whether or not the object existed - safe to re-run in CI.
- **Dry-run diffs.** `te replace` is dry-run by default; add `--save` only when you're satisfied with the preview.
- **Emit TMSL for review.** `te deploy ./model --xmla deploy.tmsl` produces the deployment script without touching the server - useful for DBA review or manual apply.
- **Path-only output.** `te ls --paths-only` and `te find --paths-only` emit one object path per line, ideal for piping to `xargs`, `te get`, or `te set`. The model-level containers (`te ls Measures`, `te ls Columns`) compose well with this for whole-model sweeps.
- **Path-only output.** `te list --paths-only` and `te find --paths-only` emit one object path per line, ideal for piping to `xargs`, `te get`, or `te set`. The model-level containers (`te list Measures`, `te list Columns`) compose well with this for whole-model sweeps.
- **Benchmarking queries.** `te query --trace --cold --runs 5` runs a DAX query with cold cache, five iterations, and captures FE/SE trace events.
- **Step timings in CI logs.** Long-running commands (`te deploy`, `te refresh`, `te script`, `te validate`) include a `durationMs` field in JSON output - useful for surfacing per-step timings in pipeline summaries.

Expand Down
2 changes: 1 addition & 1 deletion content/features/te-cli/te-cli-cicd.md
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ steps:

`te deploy` and `te save` run the Best Practice Analyzer as a pre-flight gate by default. Three behaviors are worth determining up-front:

- **Enforce** - the default. Pipeline fails if BPA finds violations at severity error. Pair with `--fail-on warning` on a standalone `te bpa run` step if you want warnings to fail too.
- **Enforce** - the default. Pipeline fails if BPA finds violations at severity >= error. Pair with `--fail-on warning` on a standalone `te bpa run` step if you want warnings to fail too.
- **Auto-fix** - `--fix-bpa` applies `fixExpression`s in memory for the deployed artifact. Source files are not modified. Useful when the source of truth lives in the model and you want deploys to normalize style without developer intervention.
- **Bypass** - `--skip-bpa` disables the gate for a single command. Useful for emergency hotfixes; not recommended as a default.

Expand Down
Loading
Loading