)` extension method in a C# script.
diff --git a/content/te3/other/release-notes/3_16_1.md b/content/references/release-notes/3_16_1.md
similarity index 99%
rename from content/te3/other/release-notes/3_16_1.md
rename to content/references/release-notes/3_16_1.md
index ba4cd11..beacd90 100644
--- a/content/te3/other/release-notes/3_16_1.md
+++ b/content/references/release-notes/3_16_1.md
@@ -4,7 +4,7 @@ uid: release-3-16-1
# Tabular Editor 3.16.1
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
## [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_16_2.md b/content/references/release-notes/3_16_2.md
similarity index 99%
rename from content/te3/other/release-notes/3_16_2.md
rename to content/references/release-notes/3_16_2.md
index 1941639..5274249 100644
--- a/content/te3/other/release-notes/3_16_2.md
+++ b/content/references/release-notes/3_16_2.md
@@ -4,7 +4,7 @@ uid: release-3-16-2
# Tabular Editor 3.16.2
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
## [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_17_0.md b/content/references/release-notes/3_17_0.md
similarity index 99%
rename from content/te3/other/release-notes/3_17_0.md
rename to content/references/release-notes/3_17_0.md
index 7b930c1..e891fe8 100644
--- a/content/te3/other/release-notes/3_17_0.md
+++ b/content/references/release-notes/3_17_0.md
@@ -4,7 +4,7 @@ uid: release-3-17-0
# Tabular Editor 3.17.0
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_17_1.md b/content/references/release-notes/3_17_1.md
similarity index 99%
rename from content/te3/other/release-notes/3_17_1.md
rename to content/references/release-notes/3_17_1.md
index 6e7ae9c..6f2d215 100644
--- a/content/te3/other/release-notes/3_17_1.md
+++ b/content/references/release-notes/3_17_1.md
@@ -4,7 +4,7 @@ uid: release-3-17-1
# Tabular Editor 3.17.1
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_18_0.md b/content/references/release-notes/3_18_0.md
similarity index 99%
rename from content/te3/other/release-notes/3_18_0.md
rename to content/references/release-notes/3_18_0.md
index 3489da9..c3672c4 100644
--- a/content/te3/other/release-notes/3_18_0.md
+++ b/content/references/release-notes/3_18_0.md
@@ -4,7 +4,7 @@ uid: release-3-18-0
# Tabular Editor 3.18.0
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_18_1.md b/content/references/release-notes/3_18_1.md
similarity index 99%
rename from content/te3/other/release-notes/3_18_1.md
rename to content/references/release-notes/3_18_1.md
index c6da362..fb97deb 100644
--- a/content/te3/other/release-notes/3_18_1.md
+++ b/content/references/release-notes/3_18_1.md
@@ -4,7 +4,7 @@ uid: release-3-18-1
# Tabular Editor 3.18.1
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_18_2.md b/content/references/release-notes/3_18_2.md
similarity index 99%
rename from content/te3/other/release-notes/3_18_2.md
rename to content/references/release-notes/3_18_2.md
index a319c6b..818fb3b 100644
--- a/content/te3/other/release-notes/3_18_2.md
+++ b/content/references/release-notes/3_18_2.md
@@ -4,7 +4,7 @@ uid: release-3-18-2
# Tabular Editor 3.18.2
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_19_0.md b/content/references/release-notes/3_19_0.md
similarity index 99%
rename from content/te3/other/release-notes/3_19_0.md
rename to content/references/release-notes/3_19_0.md
index 2241923..c10bbee 100644
--- a/content/te3/other/release-notes/3_19_0.md
+++ b/content/references/release-notes/3_19_0.md
@@ -4,7 +4,7 @@ uid: release-3-19-0
# Tabular Editor 3.19.0
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_1_0.md b/content/references/release-notes/3_1_0.md
similarity index 98%
rename from content/te3/other/release-notes/3_1_0.md
rename to content/references/release-notes/3_1_0.md
index 4430232..e68ce4c 100644
--- a/content/te3/other/release-notes/3_1_0.md
+++ b/content/references/release-notes/3_1_0.md
@@ -1,7 +1,7 @@
# Tabular Editor 3.1.0
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3.1.0 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.1.0.x64.msi) *(recommended)*
- Download [Tabular Editor 3.1.0](https://cdn.tabulareditor.com/files/TabularEditor.3.1.0.x86.msi)
diff --git a/content/te3/other/release-notes/3_1_1.md b/content/references/release-notes/3_1_1.md
similarity index 98%
rename from content/te3/other/release-notes/3_1_1.md
rename to content/references/release-notes/3_1_1.md
index a046476..2b0eba0 100644
--- a/content/te3/other/release-notes/3_1_1.md
+++ b/content/references/release-notes/3_1_1.md
@@ -1,7 +1,7 @@
# Tabular Editor 3.1.1
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3.1.1 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.1.1.x64.msi) *(recommended)*
- Download [Tabular Editor 3.1.1](https://cdn.tabulareditor.com/files/TabularEditor.3.1.1.x86.msi)
diff --git a/content/te3/other/release-notes/3_1_2.md b/content/references/release-notes/3_1_2.md
similarity index 98%
rename from content/te3/other/release-notes/3_1_2.md
rename to content/references/release-notes/3_1_2.md
index 4a4ebdd..22f5fc6 100644
--- a/content/te3/other/release-notes/3_1_2.md
+++ b/content/references/release-notes/3_1_2.md
@@ -1,7 +1,7 @@
# Tabular Editor 3.1.2
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3.1.2 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.1.2.x64.msi) *(recommended)*
- Download [Tabular Editor 3.1.2](https://cdn.tabulareditor.com/files/TabularEditor.3.1.2.x86.msi)
diff --git a/content/te3/other/release-notes/3_1_3.md b/content/references/release-notes/3_1_3.md
similarity index 98%
rename from content/te3/other/release-notes/3_1_3.md
rename to content/references/release-notes/3_1_3.md
index d24700f..4e79453 100644
--- a/content/te3/other/release-notes/3_1_3.md
+++ b/content/references/release-notes/3_1_3.md
@@ -1,7 +1,7 @@
# Tabular Editor 3.1.3
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3.1.3 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.1.3.x64.msi) *(recommended)*
diff --git a/content/te3/other/release-notes/3_1_4.md b/content/references/release-notes/3_1_4.md
similarity index 97%
rename from content/te3/other/release-notes/3_1_4.md
rename to content/references/release-notes/3_1_4.md
index 667b0c2..2f3c6c4 100644
--- a/content/te3/other/release-notes/3_1_4.md
+++ b/content/references/release-notes/3_1_4.md
@@ -1,7 +1,7 @@
# Tabular Editor 3.1.4
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3.1.4 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.1.4.x64.msi) *(recommended)*
- Download [Tabular Editor 3.1.4](https://cdn.tabulareditor.com/files/TabularEditor.3.1.4.x86.msi)
diff --git a/content/te3/other/release-notes/3_1_5.md b/content/references/release-notes/3_1_5.md
similarity index 97%
rename from content/te3/other/release-notes/3_1_5.md
rename to content/references/release-notes/3_1_5.md
index ec89ba7..c789267 100644
--- a/content/te3/other/release-notes/3_1_5.md
+++ b/content/references/release-notes/3_1_5.md
@@ -1,7 +1,7 @@
# Tabular Editor 3.1.5
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3.1.5 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.1.5.x64.msi) *(recommended)*
- Download [Tabular Editor 3.1.5](https://cdn.tabulareditor.com/files/TabularEditor.3.1.5.x86.msi)
diff --git a/content/te3/other/release-notes/3_1_6.md b/content/references/release-notes/3_1_6.md
similarity index 98%
rename from content/te3/other/release-notes/3_1_6.md
rename to content/references/release-notes/3_1_6.md
index 35e2548..cc90b8a 100644
--- a/content/te3/other/release-notes/3_1_6.md
+++ b/content/references/release-notes/3_1_6.md
@@ -1,7 +1,7 @@
# Tabular Editor 3.1.6
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3.1.6 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.1.6.x64.msi) *(recommended)*
- Download [Tabular Editor 3.1.6](https://cdn.tabulareditor.com/files/TabularEditor.3.1.6.x86.msi)
diff --git a/content/te3/other/release-notes/3_1_7.md b/content/references/release-notes/3_1_7.md
similarity index 98%
rename from content/te3/other/release-notes/3_1_7.md
rename to content/references/release-notes/3_1_7.md
index aca2877..6048b8c 100644
--- a/content/te3/other/release-notes/3_1_7.md
+++ b/content/references/release-notes/3_1_7.md
@@ -1,7 +1,7 @@
# Tabular Editor 3.1.7
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3.1.7 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.1.7.x64.msi) *(recommended)*
- Download [Tabular Editor 3.1.7](https://cdn.tabulareditor.com/files/TabularEditor.3.1.7.x86.msi)
diff --git a/content/te3/other/release-notes/3_20_0.md b/content/references/release-notes/3_20_0.md
similarity index 99%
rename from content/te3/other/release-notes/3_20_0.md
rename to content/references/release-notes/3_20_0.md
index fc033c6..d4bbcf5 100644
--- a/content/te3/other/release-notes/3_20_0.md
+++ b/content/references/release-notes/3_20_0.md
@@ -4,7 +4,7 @@ uid: release-3-20-0
# Tabular Editor 3.20.0
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_20_1.md b/content/references/release-notes/3_20_1.md
similarity index 99%
rename from content/te3/other/release-notes/3_20_1.md
rename to content/references/release-notes/3_20_1.md
index ff9bb8b..e3ebbc4 100644
--- a/content/te3/other/release-notes/3_20_1.md
+++ b/content/references/release-notes/3_20_1.md
@@ -4,7 +4,7 @@ uid: release-3-20-1
# Tabular Editor 3.20.1
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_21_0.md b/content/references/release-notes/3_21_0.md
similarity index 99%
rename from content/te3/other/release-notes/3_21_0.md
rename to content/references/release-notes/3_21_0.md
index 19526cf..f537e5c 100644
--- a/content/te3/other/release-notes/3_21_0.md
+++ b/content/references/release-notes/3_21_0.md
@@ -4,7 +4,7 @@ uid: release-3-21-0
# Tabular Editor 3.21.0
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_22_0.md b/content/references/release-notes/3_22_0.md
similarity index 99%
rename from content/te3/other/release-notes/3_22_0.md
rename to content/references/release-notes/3_22_0.md
index 3a5764f..d749b52 100644
--- a/content/te3/other/release-notes/3_22_0.md
+++ b/content/references/release-notes/3_22_0.md
@@ -4,7 +4,7 @@ uid: release-3-22-0
# Tabular Editor 3.22.0
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_22_1.md b/content/references/release-notes/3_22_1.md
similarity index 99%
rename from content/te3/other/release-notes/3_22_1.md
rename to content/references/release-notes/3_22_1.md
index 2627449..de5aee1 100644
--- a/content/te3/other/release-notes/3_22_1.md
+++ b/content/references/release-notes/3_22_1.md
@@ -4,7 +4,7 @@ uid: release-3-22-1
# Tabular Editor 3.22.1
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_23_0.md b/content/references/release-notes/3_23_0.md
similarity index 99%
rename from content/te3/other/release-notes/3_23_0.md
rename to content/references/release-notes/3_23_0.md
index 6c7e7bc..3c3f3d3 100644
--- a/content/te3/other/release-notes/3_23_0.md
+++ b/content/references/release-notes/3_23_0.md
@@ -4,7 +4,7 @@ uid: release-3-23-0
# Tabular Editor 3.23.0
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_23_1.md b/content/references/release-notes/3_23_1.md
similarity index 98%
rename from content/te3/other/release-notes/3_23_1.md
rename to content/references/release-notes/3_23_1.md
index 42b3ef5..416f497 100644
--- a/content/te3/other/release-notes/3_23_1.md
+++ b/content/references/release-notes/3_23_1.md
@@ -4,7 +4,7 @@ uid: release-3-23-1
# Tabular Editor 3.23.1
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_24_0.md b/content/references/release-notes/3_24_0.md
similarity index 99%
rename from content/te3/other/release-notes/3_24_0.md
rename to content/references/release-notes/3_24_0.md
index 968c3ec..694dd28 100644
--- a/content/te3/other/release-notes/3_24_0.md
+++ b/content/references/release-notes/3_24_0.md
@@ -4,7 +4,7 @@ uid: release-3-24-0
# Tabular Editor 3.24.0
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
@@ -109,4 +109,3 @@ Watch [this video](https://youtu.be/O4ATwdzCvWc) to get a quick tour of the main
*=Only while connected to an instance of Analysis Services or Power BI
---
-
diff --git a/content/te3/other/release-notes/3_24_1.md b/content/references/release-notes/3_24_1.md
similarity index 98%
rename from content/te3/other/release-notes/3_24_1.md
rename to content/references/release-notes/3_24_1.md
index 46cd6bf..d80c078 100644
--- a/content/te3/other/release-notes/3_24_1.md
+++ b/content/references/release-notes/3_24_1.md
@@ -4,7 +4,7 @@ uid: release-3-24-1
# Tabular Editor 3.24.1
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_24_2.md b/content/references/release-notes/3_24_2.md
similarity index 100%
rename from content/te3/other/release-notes/3_24_2.md
rename to content/references/release-notes/3_24_2.md
diff --git a/content/te3/other/release-notes/3_2_0.md b/content/references/release-notes/3_2_0.md
similarity index 97%
rename from content/te3/other/release-notes/3_2_0.md
rename to content/references/release-notes/3_2_0.md
index 4d6116f..a41c0dd 100644
--- a/content/te3/other/release-notes/3_2_0.md
+++ b/content/references/release-notes/3_2_0.md
@@ -1,7 +1,7 @@
# Tabular Editor 3.2.0
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3.2.0 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.2.0.x64.msi) *(recommended)*
- Download [Tabular Editor 3.2.0](https://cdn.tabulareditor.com/files/TabularEditor.3.2.0.x86.msi)
diff --git a/content/te3/other/release-notes/3_2_1.md b/content/references/release-notes/3_2_1.md
similarity index 98%
rename from content/te3/other/release-notes/3_2_1.md
rename to content/references/release-notes/3_2_1.md
index e67a691..061be1c 100644
--- a/content/te3/other/release-notes/3_2_1.md
+++ b/content/references/release-notes/3_2_1.md
@@ -1,7 +1,7 @@
# Tabular Editor 3.2.1
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3.2.1 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.2.1.x64.msi) *(recommended)*
- Download [Tabular Editor 3.2.1](https://cdn.tabulareditor.com/files/TabularEditor.3.2.1.x86.msi)
diff --git a/content/te3/other/release-notes/3_2_2.md b/content/references/release-notes/3_2_2.md
similarity index 98%
rename from content/te3/other/release-notes/3_2_2.md
rename to content/references/release-notes/3_2_2.md
index 6614830..62caaf9 100644
--- a/content/te3/other/release-notes/3_2_2.md
+++ b/content/references/release-notes/3_2_2.md
@@ -1,7 +1,7 @@
# Tabular Editor 3.2.2
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3.2.2 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.2.2.x64.msi) *(recommended)*
- Download [Tabular Editor 3.2.2](https://cdn.tabulareditor.com/files/TabularEditor.3.2.2.x86.msi)
diff --git a/content/te3/other/release-notes/3_2_3.md b/content/references/release-notes/3_2_3.md
similarity index 98%
rename from content/te3/other/release-notes/3_2_3.md
rename to content/references/release-notes/3_2_3.md
index 22a161d..959af24 100644
--- a/content/te3/other/release-notes/3_2_3.md
+++ b/content/references/release-notes/3_2_3.md
@@ -1,7 +1,7 @@
# Tabular Editor 3.2.3
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3.2.3 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.2.3.x64.msi) *(recommended)*
- Download [Tabular Editor 3.2.3](https://cdn.tabulareditor.com/files/TabularEditor.3.2.3.x86.msi)
diff --git a/content/te3/other/release-notes/3_3_0.md b/content/references/release-notes/3_3_0.md
similarity index 99%
rename from content/te3/other/release-notes/3_3_0.md
rename to content/references/release-notes/3_3_0.md
index 5f76186..39e8bca 100644
--- a/content/te3/other/release-notes/3_3_0.md
+++ b/content/references/release-notes/3_3_0.md
@@ -1,7 +1,7 @@
# Tabular Editor 3.3.0
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3.3.0 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.3.0.x64.msi) *(recommended)*
- Download [Tabular Editor 3.3.0](https://cdn.tabulareditor.com/files/TabularEditor.3.3.0.x86.msi)
diff --git a/content/te3/other/release-notes/3_3_1.md b/content/references/release-notes/3_3_1.md
similarity index 99%
rename from content/te3/other/release-notes/3_3_1.md
rename to content/references/release-notes/3_3_1.md
index e9db2df..c3aa53c 100644
--- a/content/te3/other/release-notes/3_3_1.md
+++ b/content/references/release-notes/3_3_1.md
@@ -1,7 +1,7 @@
# Tabular Editor 3.3.1
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3.3.1 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.3.1.Installer.x64.exe) *(recommended)*
- Download [Tabular Editor 3.3.1](https://cdn.tabulareditor.com/files/TabularEditor.3.3.1.Installer.x86.exe)
diff --git a/content/te3/other/release-notes/3_3_2.md b/content/references/release-notes/3_3_2.md
similarity index 99%
rename from content/te3/other/release-notes/3_3_2.md
rename to content/references/release-notes/3_3_2.md
index cf4e9af..e629c7a 100644
--- a/content/te3/other/release-notes/3_3_2.md
+++ b/content/references/release-notes/3_3_2.md
@@ -1,7 +1,7 @@
# Tabular Editor 3.3.2
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3.3.2 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.3.2.Installer.x64.exe) *(recommended)*
- Download [Tabular Editor 3.3.2](https://cdn.tabulareditor.com/files/TabularEditor.3.3.2.Installer.x86.exe)
diff --git a/content/te3/other/release-notes/3_3_3.md b/content/references/release-notes/3_3_3.md
similarity index 99%
rename from content/te3/other/release-notes/3_3_3.md
rename to content/references/release-notes/3_3_3.md
index a6b3537..18c5200 100644
--- a/content/te3/other/release-notes/3_3_3.md
+++ b/content/references/release-notes/3_3_3.md
@@ -1,7 +1,7 @@
# Tabular Editor 3.3.3
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3.3.3 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.3.3.Installer.x64.exe) *(recommended)*
- Download [Tabular Editor 3.3.3](https://cdn.tabulareditor.com/files/TabularEditor.3.3.3.Installer.x86.exe)
diff --git a/content/te3/other/release-notes/3_3_4.md b/content/references/release-notes/3_3_4.md
similarity index 98%
rename from content/te3/other/release-notes/3_3_4.md
rename to content/references/release-notes/3_3_4.md
index 21e4a5a..44b1704 100644
--- a/content/te3/other/release-notes/3_3_4.md
+++ b/content/references/release-notes/3_3_4.md
@@ -1,7 +1,7 @@
# Tabular Editor 3.3.4
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3.3.4 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.3.4.Installer.x64.exe) *(recommended)*
- Download [Tabular Editor 3.3.4](https://cdn.tabulareditor.com/files/TabularEditor.3.3.4.Installer.x86.exe)
diff --git a/content/te3/other/release-notes/3_3_5.md b/content/references/release-notes/3_3_5.md
similarity index 98%
rename from content/te3/other/release-notes/3_3_5.md
rename to content/references/release-notes/3_3_5.md
index 907514c..53e8a96 100644
--- a/content/te3/other/release-notes/3_3_5.md
+++ b/content/references/release-notes/3_3_5.md
@@ -1,7 +1,7 @@
# Tabular Editor 3.3.5
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_3_6.md b/content/references/release-notes/3_3_6.md
similarity index 98%
rename from content/te3/other/release-notes/3_3_6.md
rename to content/references/release-notes/3_3_6.md
index 2133be1..00dd2df 100644
--- a/content/te3/other/release-notes/3_3_6.md
+++ b/content/references/release-notes/3_3_6.md
@@ -1,7 +1,7 @@
# Tabular Editor 3.3.6
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_4_0.md b/content/references/release-notes/3_4_0.md
similarity index 99%
rename from content/te3/other/release-notes/3_4_0.md
rename to content/references/release-notes/3_4_0.md
index 28ba57f..ba8aec4 100644
--- a/content/te3/other/release-notes/3_4_0.md
+++ b/content/references/release-notes/3_4_0.md
@@ -1,7 +1,7 @@
# Tabular Editor 3.4.0
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_4_1.md b/content/references/release-notes/3_4_1.md
similarity index 98%
rename from content/te3/other/release-notes/3_4_1.md
rename to content/references/release-notes/3_4_1.md
index 59f502c..3fccb82 100644
--- a/content/te3/other/release-notes/3_4_1.md
+++ b/content/references/release-notes/3_4_1.md
@@ -1,7 +1,7 @@
# Tabular Editor 3.4.1
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_4_2.md b/content/references/release-notes/3_4_2.md
similarity index 98%
rename from content/te3/other/release-notes/3_4_2.md
rename to content/references/release-notes/3_4_2.md
index 6a017c7..9968216 100644
--- a/content/te3/other/release-notes/3_4_2.md
+++ b/content/references/release-notes/3_4_2.md
@@ -1,7 +1,7 @@
# Tabular Editor 3.4.2
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_5_0.md b/content/references/release-notes/3_5_0.md
similarity index 98%
rename from content/te3/other/release-notes/3_5_0.md
rename to content/references/release-notes/3_5_0.md
index 4117af7..881c8d3 100644
--- a/content/te3/other/release-notes/3_5_0.md
+++ b/content/references/release-notes/3_5_0.md
@@ -4,7 +4,7 @@ uid: release-3-5-0
# Tabular Editor 3.5.0
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_5_1.md b/content/references/release-notes/3_5_1.md
similarity index 98%
rename from content/te3/other/release-notes/3_5_1.md
rename to content/references/release-notes/3_5_1.md
index f08bb12..6d9a486 100644
--- a/content/te3/other/release-notes/3_5_1.md
+++ b/content/references/release-notes/3_5_1.md
@@ -4,7 +4,7 @@ uid: release-3-5-1
# Tabular Editor 3.5.1
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_6_0.md b/content/references/release-notes/3_6_0.md
similarity index 98%
rename from content/te3/other/release-notes/3_6_0.md
rename to content/references/release-notes/3_6_0.md
index 23bd7d6..d9dae63 100644
--- a/content/te3/other/release-notes/3_6_0.md
+++ b/content/references/release-notes/3_6_0.md
@@ -4,7 +4,7 @@ uid: release-3-6-0
# Tabular Editor 3.6.0
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_7_0.md b/content/references/release-notes/3_7_0.md
similarity index 99%
rename from content/te3/other/release-notes/3_7_0.md
rename to content/references/release-notes/3_7_0.md
index 3e88839..a398780 100644
--- a/content/te3/other/release-notes/3_7_0.md
+++ b/content/references/release-notes/3_7_0.md
@@ -4,7 +4,7 @@ uid: release-3-7-0
# Tabular Editor 3.7.0
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
> [!IMPORTANT]
> A bug preventing creation of new models with workspace databases was identified in this version of Tabular Editor 3. Please use [version 3.7.1](xref:release-3-7-1) instead.
diff --git a/content/te3/other/release-notes/3_7_1.md b/content/references/release-notes/3_7_1.md
similarity index 99%
rename from content/te3/other/release-notes/3_7_1.md
rename to content/references/release-notes/3_7_1.md
index 535022f..d16329f 100644
--- a/content/te3/other/release-notes/3_7_1.md
+++ b/content/references/release-notes/3_7_1.md
@@ -4,7 +4,7 @@ uid: release-3-7-1
# Tabular Editor 3.7.1
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_8_0.md b/content/references/release-notes/3_8_0.md
similarity index 98%
rename from content/te3/other/release-notes/3_8_0.md
rename to content/references/release-notes/3_8_0.md
index 9d9aa17..a1a2619 100644
--- a/content/te3/other/release-notes/3_8_0.md
+++ b/content/references/release-notes/3_8_0.md
@@ -4,7 +4,7 @@ uid: release-3-8-0
# Tabular Editor 3.8.0
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/3_9_0.md b/content/references/release-notes/3_9_0.md
similarity index 99%
rename from content/te3/other/release-notes/3_9_0.md
rename to content/references/release-notes/3_9_0.md
index 85a343d..abc6132 100644
--- a/content/te3/other/release-notes/3_9_0.md
+++ b/content/references/release-notes/3_9_0.md
@@ -4,7 +4,7 @@ uid: release-3-9-0
# Tabular Editor 3.9.0
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
# [**Downloads**](#tab/downloads)
diff --git a/content/te3/other/release-notes/beta-16_6.md b/content/references/release-notes/beta-16_6.md
similarity index 98%
rename from content/te3/other/release-notes/beta-16_6.md
rename to content/references/release-notes/beta-16_6.md
index b0d0cc2..c7670e9 100644
--- a/content/te3/other/release-notes/beta-16_6.md
+++ b/content/references/release-notes/beta-16_6.md
@@ -1,7 +1,7 @@
# Tabular Editor 3 BETA-16.6
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3 BETA-16.6](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-16.6.x86.msi)
- Download [Tabular Editor 3 BETA-16.6 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-16.6.x64.msi)
diff --git a/content/te3/other/release-notes/beta-17_4.md b/content/references/release-notes/beta-17_4.md
similarity index 98%
rename from content/te3/other/release-notes/beta-17_4.md
rename to content/references/release-notes/beta-17_4.md
index c2b354d..b47e7ed 100644
--- a/content/te3/other/release-notes/beta-17_4.md
+++ b/content/references/release-notes/beta-17_4.md
@@ -1,7 +1,7 @@
# Tabular Editor 3 BETA-17.4
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3 BETA-17.4](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-17.4.x86.msi)
- Download [Tabular Editor 3 BETA-17.4 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-17.4.x64.msi)
diff --git a/content/te3/other/release-notes/beta-18_1.md b/content/references/release-notes/beta-18_1.md
similarity index 98%
rename from content/te3/other/release-notes/beta-18_1.md
rename to content/references/release-notes/beta-18_1.md
index 29f81bd..60f0d87 100644
--- a/content/te3/other/release-notes/beta-18_1.md
+++ b/content/references/release-notes/beta-18_1.md
@@ -1,7 +1,7 @@
# Tabular Editor 3 BETA-18.1
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3 BETA-18.1](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-18.1.x86.msi)
- Download [Tabular Editor 3 BETA-18.1 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-18.1.x64.msi)
diff --git a/content/te3/other/release-notes/beta-18_2.md b/content/references/release-notes/beta-18_2.md
similarity index 98%
rename from content/te3/other/release-notes/beta-18_2.md
rename to content/references/release-notes/beta-18_2.md
index e1cd8cf..bbb976a 100644
--- a/content/te3/other/release-notes/beta-18_2.md
+++ b/content/references/release-notes/beta-18_2.md
@@ -1,7 +1,7 @@
# Tabular Editor 3 BETA-18.2 Release Notes
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3 BETA-18.2](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-18.2.x86.msi)
- Download [Tabular Editor 3 BETA-18.2 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-18.2.x64.msi)
diff --git a/content/te3/other/release-notes/beta-18_3.md b/content/references/release-notes/beta-18_3.md
similarity index 98%
rename from content/te3/other/release-notes/beta-18_3.md
rename to content/references/release-notes/beta-18_3.md
index c453d3c..be6aa96 100644
--- a/content/te3/other/release-notes/beta-18_3.md
+++ b/content/references/release-notes/beta-18_3.md
@@ -1,7 +1,7 @@
# Tabular Editor 3 BETA-18.3
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3 BETA-18.3](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-18.3.x86.msi)
- Download [Tabular Editor 3 BETA-18.3 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-18.3.x64.msi)
diff --git a/content/te3/other/release-notes/beta-18_4.md b/content/references/release-notes/beta-18_4.md
similarity index 98%
rename from content/te3/other/release-notes/beta-18_4.md
rename to content/references/release-notes/beta-18_4.md
index 647c11a..6ebfe59 100644
--- a/content/te3/other/release-notes/beta-18_4.md
+++ b/content/references/release-notes/beta-18_4.md
@@ -1,7 +1,7 @@
# Tabular Editor 3 BETA-18.4
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3 BETA-18.4](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-18.4.x86.msi)
- Download [Tabular Editor 3 BETA-18.4 (64 bit)](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-18.4.x64.msi)
diff --git a/content/te3/other/release-notes/beta-18_5.md b/content/references/release-notes/beta-18_5.md
similarity index 95%
rename from content/te3/other/release-notes/beta-18_5.md
rename to content/references/release-notes/beta-18_5.md
index 4174500..7ad03ae 100644
--- a/content/te3/other/release-notes/beta-18_5.md
+++ b/content/references/release-notes/beta-18_5.md
@@ -1,7 +1,7 @@
# Tabular Editor 3 BETA-18.5
> [!IMPORTANT]
-> A newer version of Tabular Editor is available. You can find the latest version [here](~/te3/other/release-notes).
+> A newer version of Tabular Editor is available. You can find the latest version [here](https://docs.tabulareditor.com/references/release-notes).
- Download [Tabular Editor 3 BETA-18.5](https://cdn.tabulareditor.com/files/TabularEditor.3.BETA-18.5.x86.msi)
diff --git a/content/te3/other/roadmap.md b/content/references/roadmap.md
similarity index 82%
rename from content/te3/other/roadmap.md
rename to content/references/roadmap.md
index c55c38d..9d2fd10 100644
--- a/content/te3/other/roadmap.md
+++ b/content/references/roadmap.md
@@ -3,6 +3,12 @@ uid: roadmap
title: Roadmap
author: Morten Lønskov
updated: 2025-10-29
+applies_to:
+ products:
+ - product: Tabular Editor 2
+ none: true
+ - product: Tabular Editor 3
+ full: true
---
# Tabular Editor 3 Roadmap
@@ -116,3 +122,6 @@ Below is an overview of major new features to be shipped with Tabular Editor 3 u
✅ Offline DAX formatting
+# Tabular Editor 2 Roadmap
+> [!NOTE]
+>Tabular Editor 2 is no longer under active development and will not receive any major feature additions or improvements from our side. We are, however, committed to keeping it up-to-date, ensuring support for new semantic modelling features as they are released from Microsoft, and also fixing any critical or blocking issues. As the project is open-source under MIT, anyone is welcome to submit pull requests, which will be reviewed and approved by our team.
\ No newline at end of file
diff --git a/content/te3/features/shortcuts.md b/content/references/shortcuts3.md
similarity index 91%
rename from content/te3/features/shortcuts.md
rename to content/references/shortcuts3.md
index f84611a..a7906ed 100644
--- a/content/te3/features/shortcuts.md
+++ b/content/references/shortcuts3.md
@@ -1,13 +1,21 @@
---
-uid: shortcuts
-title: Keyboard shortcuts
+uid: shortcuts3
+title: Keyboard shortcuts Tabular Editor 3
author: Daniel Otykier
updated: 2021-09-08
applies_to:
- editions:
- - edition: Desktop
- - edition: Business
- - edition: Enterprise
+applies_to:
+ products:
+ - product: Tabular Editor 2
+ none: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
---
# Keyboard shortcuts
diff --git a/content/te3/features/supported-files.md b/content/references/supported-files.md
similarity index 97%
rename from content/te3/features/supported-files.md
rename to content/references/supported-files.md
index e8ea3c4..a2bb3a6 100644
--- a/content/te3/features/supported-files.md
+++ b/content/references/supported-files.md
@@ -4,10 +4,18 @@ title: Supported file types
author: Morten Lønskov
updated: 2023-10-17
applies_to:
- editions:
- - edition: Desktop
- - edition: Business
- - edition: Enterprise
+ products:
+ - product: Tabular Editor 2
+ none: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ partial: true
+ note: "Desktop Edition does not support model metadata files"
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
---
# Supported file types
diff --git a/content/references/toc.md b/content/references/toc.md
new file mode 100644
index 0000000..0589b90
--- /dev/null
+++ b/content/references/toc.md
@@ -0,0 +1,20 @@
+# Downloads and Releases
+## @downloads
+## @release-history
+## @whats-new
+
+# Technical Reference
+## @faq
+## @preferences
+## @policies
+## @shortcuts3
+## @shortcuts2
+## @user-options
+## @supported-files
+## @user-setting-files-te2
+
+# Development and Planning
+## @roadmap
+
+# Deprecated Features
+## @formatdax
\ No newline at end of file
diff --git a/content/te3/features/user-options.md b/content/references/user-options.md
similarity index 92%
rename from content/te3/features/user-options.md
rename to content/references/user-options.md
index 8cf12a1..c1a16c4 100644
--- a/content/te3/features/user-options.md
+++ b/content/references/user-options.md
@@ -3,6 +3,18 @@ uid: user-options
title: User options (.tmuo) file
author: Daniel Otykier
updated: 2021-09-27
+applies_to:
+ products:
+ - product: Tabular Editor 2
+ none: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
---
# Tabular Model User Options (.tmuo) File
diff --git a/content/references/user-settings-files-te2.md b/content/references/user-settings-files-te2.md
new file mode 100644
index 0000000..6dac543
--- /dev/null
+++ b/content/references/user-settings-files-te2.md
@@ -0,0 +1,27 @@
+---
+uid: user-setting-files-te2
+title: User Settings Files Tabular Editor 2
+applies_to:
+ products:
+ - product: Tabular Editor 2
+ full: true
+ - product: Tabular Editor 3
+ none: true
+---
+
+## User Settings Files Tabular Editor 2
+
+When Tabular Editor 2 is started, it writes some additional files to the disk at various locations. What follows is a description of these files and their content:
+
+### In %ProgramData%\TabularEditor
+
+- **BPARules.json** Best Practice Analyzer rules that are available to all users.
+- **TOMWrapper.dll** This file is used when executing scripts inside Tabular Editor. You can also reference the .dll in your own .NET projects, to utilise the wrapper code. If you are having issues executing advanced scripts after upgrading Tabular Editor, please delete this file and restart Tabular Editor.
+- **Preferences.json** This file stores all preferences set in the File > Preferences dialog.
+
+### In %AppData%\Local\TabularEditor
+
+- **BPARules.json** Best Practice Analyzer rules that are available only to the current user.
+- **CustomActions.json** Custom script actions that can be invoked from the right-click menu or the Tools-menu of the Explorer Tree. These actions can be created on the Advanced Script Editor tab.
+- **RecentFiles.json** Stores a list of recently opened .bim files. The last most 10 items in this list is displayed in the File > Recent Files menu.
+- **RecentServers.json** Stores a list of recently accessed server names. These are displayed in the dropdown portion of the "Connect to Database" dialog box and in the Deployment Wizard.
diff --git a/content/te3/whats-new.md b/content/references/whats-new.md
similarity index 100%
rename from content/te3/whats-new.md
rename to content/references/whats-new.md
diff --git a/content/te2/gdpr-delete.md b/content/security/gdpr-delete.md
similarity index 62%
rename from content/te2/gdpr-delete.md
rename to content/security/gdpr-delete.md
index 597edfd..202e914 100644
--- a/content/te2/gdpr-delete.md
+++ b/content/security/gdpr-delete.md
@@ -1,3 +1,7 @@
-# User Data Deletion
+---
+uid: gdpr-delete
+title: GDPR Deletion
+---
+# User Data Deletion
In order to request a complete data deletion of all user records, please send an e-mail to gdpr@tabulareditor.com.
diff --git a/content/security/index.md b/content/security/index.md
new file mode 100644
index 0000000..bc587a0
--- /dev/null
+++ b/content/security/index.md
@@ -0,0 +1,15 @@
+# Security
+
+This section contains information about security, privacy, and licensing.
+
+## In this section
+
+- @security-privacy - Security and privacy considerations of Tabular Editor 3
+- @privacy-policy - Privacy policy and data handling
+- @gdpr-delete - User Data Deletion
+- @te3-eula - The latest version of our license terms
+- @third-party-notices - Third-party component licenses and notices
+
+---
+
+*Important information about security, privacy, and legal matters.*
diff --git a/content/te3/other/privacy-policy.md b/content/security/privacy-policy.md
similarity index 98%
rename from content/te3/other/privacy-policy.md
rename to content/security/privacy-policy.md
index ecafe09..35e671a 100644
--- a/content/te3/other/privacy-policy.md
+++ b/content/security/privacy-policy.md
@@ -3,6 +3,18 @@ uid: privacy-policy
title: Privacy Policy
author: Søren Toft Joensen
updated: 2021-09-08
+applies_to:
+ products:
+ - product: Tabular Editor 2
+ none: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
---
# Privacy Policy
@@ -158,4 +170,4 @@ Don’t hesitate to contact us if you have any questions.
- Via this Link: https://tabulareditor.com/contact
#### Complaints
-If you wish to complain about the processing of your personal data, please contact us at [contact@tabulareditor.com](mailto:contact@tabulareditor.com). You may also contact the Data Protection Agency, Borgergade 28, 5., 1300 Copenhagen K.
+If you wish to complain about the processing of your personal data, please contact us at [contact@tabulareditor.com](mailto:contact@tabulareditor.com). You may also contact the Data Protection Agency, Borgergade 28, 5., 1300 Copenhagen K.
\ No newline at end of file
diff --git a/content/te3/features/security-privacy.md b/content/security/security-privacy.md
similarity index 97%
rename from content/te3/features/security-privacy.md
rename to content/security/security-privacy.md
index b1fdeb2..33589d3 100644
--- a/content/te3/features/security-privacy.md
+++ b/content/security/security-privacy.md
@@ -3,6 +3,18 @@ uid: security-privacy
title: Security overview
author: Daniel Otykier
updated: 2024-10-30
+applies_to:
+ products:
+ - product: Tabular Editor 2
+ none: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
---
# Tabular Editor 3 Security and Privacy
diff --git a/content/security/te3-eula.md b/content/security/te3-eula.md
new file mode 100644
index 0000000..b23da0f
--- /dev/null
+++ b/content/security/te3-eula.md
@@ -0,0 +1,21 @@
+---
+uid: te3-eula
+title: Standard License Terms
+author: Søren Toft Joensen
+updated: 2021-07-10
+applies_to:
+ products:
+ - product: Tabular Editor 2
+ none: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
+---
+# Tabular Editor 3 Standard License Terms
+
+The latest version of our license terms is always available on https://tabulareditor.com/license-terms
diff --git a/content/te3/other/third-party-notices.md b/content/security/third-party-notices.md
similarity index 99%
rename from content/te3/other/third-party-notices.md
rename to content/security/third-party-notices.md
index b4d0f00..27a2a1e 100644
--- a/content/te3/other/third-party-notices.md
+++ b/content/security/third-party-notices.md
@@ -3,6 +3,18 @@ uid: third-party-notices
title: Third Party Notices
author: Daniel Otykier
updated: 2021-06-01
+applies_to:
+ products:
+ - product: Tabular Editor 2
+ none: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
---
# Tabular Editor 3 Third Party Notices
diff --git a/content/security/toc.md b/content/security/toc.md
new file mode 100644
index 0000000..be14723
--- /dev/null
+++ b/content/security/toc.md
@@ -0,0 +1,7 @@
+# @security-privacy
+
+# Legal
+## @te3-eula
+## @third-party-notices
+## @privacy-policy
+## @gdpr-delete
\ No newline at end of file
diff --git a/content/te2/Advanced-Scripting-and-Dynamic-LINQ-quiz.md b/content/te2/Advanced-Scripting-and-Dynamic-LINQ-quiz.md
deleted file mode 100644
index 7363fb5..0000000
--- a/content/te2/Advanced-Scripting-and-Dynamic-LINQ-quiz.md
+++ /dev/null
@@ -1,114 +0,0 @@
-Are you a Tabular Editor pro?
-
-Test your knowledge of Tabular Editor's Advanced Scripting and Dynamic LINQ filter expressions. All the questions here may be answered using just one line of code.
-
-If you're new to these features, the solutions presented here (both the C# and Dynamic LINQ version), provides a lot of useful information on how this stuff works, so make sure to check them out.
-
-***
-
-#### Question #1) Total number of measures
-* How would you obtain the total number of measures in your model?
-
-C# script solution
-Model.AllMeasures.Count().Output();
-Explanation: The Model object represents the root of the TOM tree. It supports most of the properties found in the API documentation with the addition of a number of extra properties and methods, that are only available inside Tabular Editor. The AllMeasures property is one of these extra properties, added for convenience. It simply returns a collection of all measures across all tables in the model. All collections (or more precisely, enumerables) support the powerful .NET LINQ methods. Count() is one such method, which simply returns the number of elements in the collection as an integer. Once we have that, the only thing left is to Output() it.
-
-
-Dynamic LINQ solution
-:ObjectType="Measure"
-Explanation: When you put a ':' as the first character of the Filter textbox, you enable Dynamic LINQ filtering. What that means is, that Tabular Editor evaluates the expression after the ':' character against every object in the TOM tree, returning only those objects where the expression evaluates to true. Putting the expression above into the Filter textbox, will have Tabular Editor display all objects whose ObjectType property is "Measure". The search result count at the bottom of the screen, should then tell you how many measures you have in total.
-
-
-***
-
-#### Question #2) Find all measures with "TODO" in their expression
-
-* What's the easiest way to find all measures that contain the word "TODO" inside their Expression property?
-
-C# script solution
-Model.AllMeasures.Where(m => m.Expression.Contains("TODO")).Output();
-Explanation: The first part of this script is the same as in question 1. Where(x => y) is another .NET LINQ method, that filters the preceding collection based on a so-called predicate. The predicate is expressed using the special C# Lambda notation x => y. On the left side of the arrow, you declare a variable with a name of your choice. The expression to the right of the arrow will be evaluated for every object in the collection, using the variable on the left to represent individual objects. This expression can be any valid C# expression that evaluates to a boolean value (true or false). Thus, the Where method simply filters the collection to return only those objects where the Lambda expression evaluates to true. So in the example above, we decide to use m as the name of our variable, which will represent the individual measures of our model. But we only want to keep measures whose Expression property Contains the word "TODO". Makes sense?
-
-
-Dynamic LINQ solution
-:ObjectType="Measure" and Expression.Contains("TODO")
-Explanation: The first part of this Dynamic LINQ expression is identical to question 1. Dynamic LINQ lets you use many different operators such as and or or to express complex logic. Notice how the second part of the expression is similar to the C# Lambda expression used above, except that we don't declare a variable to represent the measure. Since Dynamic LINQ is evaluated against every object in the TOM tree, any property or method name we add to the expression will implicitly be evaluated against the current object. Since different types of objects have different properties, no error is produced if the Filter box contains an invalid expression. However, when writing Dynamic LINQ expressions within the Best Practice Analyzer, an error will be shown if you try to access a property or method that doesn't exist on the chosen object types.
-
-
-***
-
-#### Question #3) Count the number of direct measure dependencies
-* How can we know the number of measures that directly reference the currently selected measure? You can always check your answer against the "Show dependencies" dialog.
-
-C# script solution
-Selected.Measure.ReferencedBy.Measures.Count().Output();
-Explanation: Selected.Measure refers to the currently selected measure in the explorer tree. All objects that can be referenced through DAX (measures, tables, columns, KPIs) have the ReferencedBy property, which is a special collection of objects that directly reference the former. Although we could use the LINQ-method .OfType<Measure>() to filter the collection to measures only, this particular collection contains a set of convenient properties that does this for us. One of them, is Measures.
-
-
-Dynamic LINQ solution
-:ObjectType="Measure" and DependsOn.Measures.Any(Name="Reseller Total Sales")
-Explanation: It's not possible to create a Dynamic LINQ filter expression based on the current selection, so instead we consider a specific measure in this example, [Reseller Total Sales]. The example here, will return all those objects who have a direct dependency on a measure named "Reseller Total Sales". The reason we're using "DependsOn" instead of "ReferencedBy" here, is that search filter expressions are evaluated against every single object in the model. That's the opposite of what we're doing in the C# script, where we already have a handle to a specific measure and want to obtain the list of measures referencing that measure.
-
-
-***
-
-#### Question #4) Recursively count the number of measure dependencies
-* Let's go deeper. How would you obtain the number of measures that depend recursively on the currently selected measure?
-
-C# script solution
-Selected.Measure.ReferencedBy.Deep().OfType<Measure>().Count().Output();
-Here, we add the Deep() method to recursively traverse the dependency tree, to get a collection of all objects that reference the original measure either directly, or indirectly through other objects. We have to manually filter this collection to objects of type "Measure", to avoid seeing Calculated Columns, RLS Expressions, etc. The only thing left then, is to Count() the number of items in this result and Output() it to the screen.
By the way, if we wanted to display a list of these measures instead of just the count, we could write:
-Selected.Measure.ReferencedBy.Deep().OfType().Output();
-
-
-Dynamic LINQ solution
-:ObjectType="Measure" and DependsOn.Deep().Any(Name="Reseller Total Sales")
-Explanation: All methods that can be called using C# may also be called using Dynamic LINQ. So just like we did above, we're calling the Deep() method to recursively traverse the dependency tree upwards, to find all objects that have a dependency on an object named "Reseller Total Sales". Strictly speaking, this is not exactly the same as the C# expression above, as we would also get a positive hit on non-measure type objects with the name "Reseller Total Sales". To work around that, we could either explicitly state that we only want to consider measures...
-:DependsOn.Deep().Any(Name="Reseller Total Sales" and ObjectType="Measure")
-...or we could use the DaxObjectFullName property to check for a hit (column names would be fully qualified, and measures must be uniquely named across the entire model):
-:DependsOn.Deep().Any(DaxObjectFullName="[Reseller Total Sales]")
-
-
-***
-
-#### Question #5) List all related dimensions
-* Given a fact table `'Reseller Sales'`, how do we obtain a list of all related dimension tables?
-
-C# script solution
-var t = Model.Tables["Reseller Sales"];
-t.UsedInRelationships.Where(r => r.FromTable == t).Select(r => r.ToTable).Output();
-Explanation: Okay, I admit, this one is a little tricky and because I used a variable to hold the given table, we end up with 2 lines of code instead of one. The naïve approach would be to simply write t.RelatedTables.Output();, but since the question specifically asked us to output only related dimension tables, we need to consider only those relationships where our given table is on the "From" side. That is the purpose of t.UsedInRelationships.Where(r => r.FromTable == t). If we just wanted the list of outgoing relationships, we'd be done here, but since we want a list of the tables pointed to by those relationships, we need to project this list to get the `ToTable` property of each relationship. That's exactly what .Select(r => r.ToTable) does. Makes sense? Now check out the Dynamic LINQ solution below.
-
-Dynamic LINQ solution
-:UsedInRelationships.Any(ToTable=current and FromTable.Name = "Reseller Sales")
-Explanation: Let's read this expression from left to right, keeping in mind that this is evaluated for every object in the model. UsedInRelationships is a list of relationships in which the current object participates. At this point, we've ruled out anything that's not a table or a column object, as these are the only ones that have the UsedInRelationships property. To filter anything that's not a dimension table, we only want to consider relationships pointing to the current object, from the table in question. .Any( ... ) evaluates to true if at least one of the relationships satisfies the condition: ToTable=current and FromTable.Name = "Reseller Total Sales". The special keyword current refers to the current object being evaluated. As we're equating this with the ToTable property of the relationship, we're ruling out columns from the search result, as this property can only be of type Table. FromTable.Name = ... is self-explanatory.
-
-
-***
-
-#### Question #6) Find all objects with the words "Total" and "Amount" (in that order) in their name
-
-
-
-Hint: The regular expression for that would be `Total.*Amount`
-
-C# script solution
-Model.AllMeasures.Where(m => System.Text.RegularExpressions.Regex.IsMatch(m.Name, "Total.*Amount")).Output();
-Explanation: This one is actually quite annoying to do in the Advanced Script tab. Strictly speaking, we would actually have to search all the collections (Tables, AllMeasures, AllColumns, AllHierarchies, ...) and then concatenate the result, if we wanted to see them all in one view. Additionally, since the System.Text.RegularExpressions namespace is not in scope by default, the script is not really that typing-friendly. Check out the Dynamic LINQ solution instead.
-
-Dynamic LINQ solution
-:Regex.IsMatch(Name, "Total.*Amount")
-Beautiful, isn't it?
-
-
-***
-
-#### Question #7) Same as #6 but with a case-*in*sensitive search
-
-C# script solution
-Model.AllMeasures.Where(m => System.Text.RegularExpressions.Regex.IsMatch(m.Name, "Total.*Amount", RegexOptions.IgnoreCase)).Output();
-
-Dynamic LINQ solution
-:Regex.IsMatch(Name, "Total.*Amount", "IgnoreCase")
-
-#### Stay tuned for more...
diff --git a/content/te2/Advanced-features.md b/content/te2/Advanced-features.md
deleted file mode 100644
index 1f23db0..0000000
--- a/content/te2/Advanced-features.md
+++ /dev/null
@@ -1,98 +0,0 @@
-# Advanced Features
-
-In addition to the features mentioned in the [Features at a glance](/te2/Features-at-a-glance) article, Tabular Editor also supports the following features for advanced usage.
-
-## Replace tables
-As of version 2.7, you can now replace a table simply by copying (CTRL+C) one table - even from another instance of Tabular Editor - and then selecting the table you want to replace, before hitting paste (CTRL+V). A prompt will ask you to confirm whether you really want to replace the table ("Yes"), insert as a new table ("No") or cancel the operation entirely:
-
-
-
-If you choose "Yes", the selected table will be replaced with the table in the clipboard. Furthermore, all relationships pointing to or from that table will be updated to use the new table. For this to work, columns participating in relationships must have the same name and data type in both the original table, and the inserted table.
-
-## Roles and Row-Level Security
-As of version 2.1, Roles are now visible in the Explorer Tree. You can right-click the tree to create new roles, delete or duplicate existing roles. You can view and edit the members of each role, by locating the role in the Explorer Tree, and navigating to the "Role Members" property in the Property Grid. Note that when deploying, the [Deployment Wizard](/te2/Advanced-features#deployment-wizard) does not deploy role members by default.
-
-The biggest advantage of working with Roles through Tabular Editor, is that each Table object has a "Row Level Filters" property, which lets you view and edit the filters defined on that table, across all roles:
-
-
-
-Of course, you can also view the filters across all tables in one particular role, similar to the UI of SSMS or Visual Studio:
-
-
-
-## View Table Partitions
-TODO
-## DAX Expression Editor
-TODO
-## Script Editor
-TODO (For now, please view [this article](/te2/Advanced-Scripting))
-## Scripting/referencing objects
-You can use drag-and-drop functionality, to script out objects in the following ways:
-
-* Drag one or more objects to another Windows application (text editor or SSMS)
-JSON code representing the dragged object(s) will be created. When dragging the Model node, a Table, a Role or a Data Source, a "createOrReplace" script is created.
-
-* Dragging an object (measure, column or table) into the DAX expression editor, will insert a fully-qualified DAX-reference to the object in question.
-
-* Dragging an object to the Advanced Script editor, will insert the C# code necessary to access the object through the TOM tree.
-## Deployment Wizard
-Tabular Editor comes with a deployment wizard that provides a few benefits compared to deploying from SSDT - especially when deploying to an existing database. After choosing a server and a database to deploy to, you have the following options for the deployment at hand:
-
-
-
-Leaving the "Deploy Connections" box unchecked, will make sure that all the data sources on the target database stay untouched. You will get an error if your model contains one or more tables with a data source, that does not already exist in the target database.
-
-Similarly, leaving out "Deploy Table Partitions", will make sure that existing partitions on your tables are not changed, leaving the data in the partitions intact.
-
-When the "Deploy Roles" box is checked, the roles in the target database will be updated to reflect what you have in the loaded model, however if the "Deploy Role Members" is unchecked, the members of each role will be unchanged in the target database.
-
-## Metadata Backup
-If you wish, Tabular Editor can automatically save a backup copy of the existing model metadata, prior to each save (when connected to an existing database) or deployment. This is useful if you're not using a version control system, but still need to rollback to a previous version of your model.
-
-To enable this setting, go to "File" > "Preferences", enable the checkbox and choose a folder to place the metadata backups:
-
-
-
-If the setting is enabled, a compressed (zipped) version of the existing model metadata will be saved to this location whenever you use the Deployment Wizard, or when you click the "Save" button while connected to a (workspace) database.
-
-## Formula Fix-up and Formula Dependencies
-Tabular Editor continuously parses the DAX expressions of all measures, calculated columns and calculated tables in your model, to construct a dependency tree of these objects. This dependency tree is used for the Formula Fix-up functionality, which may be enabled under "File" > "Preferences". Formula Fix-up automatically updates the DAX expression of any measure, calculated column or calculated table, whenever an object that was referenced in the expression is renamed.
-
-To visualize the dependency tree, right-click the object in the explorer tree and choose "Show dependencies..."
-
-
-
-## Import/Export Translations
-Select one or more cultures in the Explorer Tree, right-click and choose "Export Translations..." to generate a .json file that can be imported later in either Tabular Editor or Visual Studio. Choose "Import Translations..." to import a corresponding .json file. You can choose whether to overwrite existing translations. If you don't, translations defined in the .json file will only be applied to objects that do not already have a translation for the given culture.
-
-## Folder Serialization
-This feature allows you to more easily integrate your SSAS Tabular Models in a file-based source control environment such as TFS, SubVersion or Git. By choosing "File" > "Save to Folder...", Tabular Editor will deconstruct the Model.bim file and save its content as separate files in a folder structure similar to the structure of the JSON within the Model.bim. When subsequently saving the model, only files with changed metadata will be touched, meaning most version control systems can easily detect which changes have been done to the model, making source merging and conflict handling a lot easier, than when working with a single Model.bim file.
-
-
-
-By default, objects are serialized down to the lowest object level (meaning measures, columns and hierarchies are stored as individual .json files).
-
-Additionally, Tabular Editor's [command-line syntax](xref:command-line-options) supports loading a model from this folder structure and deploying it directly to a database, making it easy for you to automate builds for continuous integration workflows.
-
-If you want to customize the granularity at which metadata is saved to individual files, go to File > Preferences and click the "Save to folder"-tab. Here, it's possible to toggle some serialization options which are passed to the TOM when serializing into JSON. Furthermore, you can check/uncheck the types of objects for which individual files will be generated. In some Version Control scenarios, you might want to store everything related to one table in a file on its own, where as in other scenarios you may need individual files for columns and measures.
-
-These settings are saved in an annotation on the model, the first time you use the Save to Folder function, so that the settings are reused when the model is loaded and the "Save"-button is subsequently clicked. If you want to apply new settings, use "File > Save to Folder..." again.
-
-
-
-## User Settings Files
-
-When Tabular Editor is executed, it writes some additional files to the disk at various locations. What follows is a description of these files and their content:
-
-### In %ProgramData%\TabularEditor
-
-- **BPARules.json** Best Practice Analyzer rules that are available to all users.
-- **TOMWrapper.dll** This file is used when executing scripts inside Tabular Editor. You can also reference the .dll in your own .NET projects, to utilise the wrapper code. If you are having issues executing advanced scripts after upgrading Tabular Editor, please delete this file and restart Tabular Editor.
-- **Preferences.json** This file stores all preferences set in the File > Preferences dialog.
-
-### In %AppData%\Local\TabularEditor
-
-- **BPARules.json** Best Practice Analyzer rules that are available only to the current user.
-- **CustomActions.json** Custom script actions that can be invoked from the right-click menu or the Tools-menu of the Explorer Tree. These actions can be created on the Advanced Script Editor tab.
-- **RecentFiles.json** Stores a list of recently opened .bim files. The last most 10 items in this list is displayed in the File > Recent Files menu.
-- **RecentServers.json** Stores a list of recently accessed server names. These are displayed in the dropdown portion of the "Connect to Database" dialog box and in the Deployment Wizard.
diff --git a/content/te2/Best-Practice-Analyzer.md b/content/te2/Best-Practice-Analyzer.md
deleted file mode 100644
index ae0a548..0000000
--- a/content/te2/Best-Practice-Analyzer.md
+++ /dev/null
@@ -1,145 +0,0 @@
-# Best Practice Analyzer
-
-> [!NOTE]
-> Some of the information and screenshots in this article is outdated, as the Best Practice Analyzer has received a [complete overhaul in Tabular Editor v. 2.8.1](Best-Practice-Analyzer-Improvements.md). Information on Dynamic LINQ (rule expressions) is still up-to-date.
-
-Inspired by [this excellent suggestion](https://github.com/TabularEditor/TabularEditor/issues/39), I am proud to present the Best Practice Analyzer (BPA) - a brand new feature of Tabular Editor. Go to the Tools-menu and click "Best Practice Analyzer...", this will open the following window (you can continue working on your model in the main window, while the BPA window stays open):
-
-
-
-BPA lets you define rules on the metadata of your model, to encourage certain conventions and best practices while developing in SSAS Tabular.
-
-Clicking one of the rules in the top list, will show you all objects that satisfy the conditions of the given rule in the bottom list:
-
-
-
-Double-clicking an object in the list switches the focus back to the main Tabular Editor window, where the object will be selected in the Explorer Tree ("Go to object..."). It is also possible to specify that a rule should be ignored entirely (can also be done by removing the checkmarks from the rule list), or ignored only for a specific object. Ignores are stored in the metadata annotations of the Model.bim file.
-
-To create a new rule, simply click "Add rule..." while you have a Tabular Model loaded in Tabular Editor. This opens a new window, where you can give your rule a name, a description and specify the conditions of the rule:
-
-
-
-A visual rule builder is planned for a later release. For now, you specify the rule condition using a [Dynamic LINQ expression](https://github.com/kahanu/System.Linq.Dynamic/wiki/Dynamic-Expressions) that allows you to access all properties on the type(s) of object(s) specified in the dropdown. All objects that satisfy the condition will show up in the BPA UI when the rule is selected.
-
-By default, a rule created this way will be added to the metadata annotations of the Model object and stored in the Model.bim file or the connected database, when you click "Save" in Tabular Editor. You can promote a rule stored locally in a model to a "global" rule. Global rules are stored in your %AppData%\Local\TabularEditor folder in a file called "BPARules.json". You can also put the BPARules.json in the %ProgramData%\TabularEditor folder, to make the rules available to all users on the machine.
-
-Note that the rule ID's must always be unique. In case a rule within the model metadata has the same ID as a rule in the %AppData% or %ProgramData% folder, the order of precedence is:
-
-- Rules stored locally in the model
-- Rules stored in the %AppData%\Local folder
-- Rules stored in the %ProgramData% folder
-
-## Rule Expression Samples
-In this section, you'll see some examples of Dynamic LINQ expressions that can be used to define rules. The expression that is entered in the Rule Expression Editor, will be evaluated whenever focus leaves the textbox, and any syntax errors will be shown on top of the screen:
-
-
-
-Your rule expressions may access any public properties on the objects in the TOM. If you try to access a property that does not exist on that type of object, an error will also be shown:
-
-
-
-"Expression" does not exist on the "Column" object, but if we switch the dropdown to "Calculated Columns", the statement above works fine:
-
-
-
-Dynamic LINQ supports all the standard arithmetic, logical and comparison operators, and using the "."-notation, you can access subproperties and -methods of all objects.
-
-```
-String.IsNullOrWhitespace(Expression) and not Name.StartsWith("Dummy")
-```
-
-The above statement, applied to Calculated Columns, Calculated Tables or Measures, flags those that have an empty DAX expression unless the object's name starts with the text "Dummy".
-
-Using LINQ, we can also work with collections of objects. The following expression, applied to tables, will find those that have more than 10 columns which are not organized in Display Folders:
-
-```
-Columns.Count(DisplayFolder = "") > 10
-```
-
-Whenever we use a LINQ method to iterate over a collection, the expression used as an argument to the LINQ method is evaluated on the items in the collection. Indeed, DisplayFolder is a property on columns that does not exist at the Table level.
-
-Here, we see this rule in action on the Adventure Works tabular model. Note how the "Reseller" table shows up as being in violation, while the "Reseller Sales" does not show up (columns in the latter have been organized in Display Folders):
-
-
-
-To refer to the parent object inside a LINQ method, use the special "outerIt" syntax. This rule, applied to tables, will find those that contain columns whose name does not start with the table name:
-
-```
-Columns.Any(not Name.StartsWith(outerIt.Name))
-```
-
-It would probably make more sense to apply this rule to Columns directly, in which case it should be written as:
-
-```
-not Name.StartsWith(Table.Name)
-```
-
-To compare against enumeration properties, simply pass the enumerated value as a string. This rule, will find all columns whose name end with the word "Key" or "ID", but where the SummarizeBy property has not been set to "None":
-
-```
-(Name.EndsWith("Key") or Name.EndsWith("ID")) and SummarizeBy <> "None"
-```
-
-## Finding unused objects
-When building Tabular Models it is important to avoid high-cardinality columns at all costs. Typical culprits are system timestamps, technical keys, etc. that have been imported to the model by mistake. In general, we should make sure that the model only contains columns that are actually needed. Wouldn't it be nice if the Best Practice Analyzer could tell us which columns are likely not needed at all?
-
-The following rule will report columns that:
-
-- ...are hidden (or whose parent table is hidden)
-- ...are not referenced by any DAX expressions (considers all DAX expressions in the model - even drillthrough and RLS filter expressions)
-- ...do not participate in any relationships
-- ...are not used as the "Sort By"-column of any other column
-- ...are not used as levels of a hierarchy.
-
-The Dynamic LINQ expression for this BPA rule is:
-
-```
-(IsHidden or Table.IsHidden)
-and ReferencedBy.Count = 0
-and (not UsedInRelationships.Any())
-and (not UsedInSortBy.Any())
-and (not UsedInHierarchies.Any())
-```
-
-The same technique can be used to find unused measures. It's a little simpler, since measures can't participate in relationships, etc. So instead, let's spice things up a bit, by also considering whether any downstream objects that reference a given measure, are visible or not. That is, if measure [A] is referenced by measure [B], and both measure [A]" and [B] are hidden, and no other DAX expressions refer to these two measures, we should let the developer know that it is safe to remove both of them:
-
-```
-(IsHidden or Table.IsHidden)
-and not ReferencedBy.AllMeasures.Any(not IsHidden)
-and not ReferencedBy.AllColumns.Any(not IsHidden)
-and not ReferencedBy.AllTables.Any(not IsHidden)
-and not ReferencedBy.Roles.Any()
-```
-
-## Fixing objects
-In some cases, it is possible to automatically fix the issues on objects satisfying the criteria of a rule. For example when it's just a matter of setting a simple property on the object. Take a closer look at the JSON behind the following rule:
-
-```json
-{
- "ID": "FKCOLUMNS_HIDDEN",
- "Name": "Hide foreign key columns",
- "Category": null,
- "Description": "Columns used on the Many side of a relationship should be hidden.",
- "Severity": 1,
- "Scope": "Column",
- "Expression": "Model.Relationships.Any(FromColumn = outerIt) and not IsHidden and not Table.IsHidden",
- "FixExpression": "IsHidden = true",
- "Compatibility": [
- 1200,
- 1400
- ],
- "IsValid": false
-}
-```
-
-This rule finds all columns that are used in a relationship (on the "Many"/"From" side), but where the column or its parent table are not hidden. It is recommended that such columns are never shown, as users should filter data using the related (dimension) table instead. So the fix in this case, would be to set the columns IsHidden property to true, which is exactly what the "FixExpression" string above does. To see this in action, right-click any objects that violate the rule, and choose "Generate Fix Script". This puts a small script into the clipboard, which can be pasted into the Advanced Script Editor, from where you can easily review the code and execute it:
-
-
-
-Remember that you can always undo (CTRL+Z) changes done to a model after script execution.
-
-Feedback on this new tool is most welcome! In the future, we plan to provide a set of universal Best Practices that will ship with Tabular Editor to get you started. Furthermore, plans are in motion to make the Best Practice Analyzer available as a plug-in to Visual Studio, so those of you not using Tabular Editor can still benefit from it.
-
-## Official Best Practice Rules
-
-Microsoft has provided a set of standard Best Practice Rules. The definition of these rules is available in [this GitHub repository](https://github.com/microsoft/Analysis-Services/tree/master/BestPracticeRules). Microsoft encourages community contributions and feedback to this repository. For more details and background on these rules, please view [this official blogpost](https://powerbi.microsoft.com/en-us/blog/best-practice-rules-to-improve-your-models-performance/).
diff --git a/content/te2/Features-at-a-glance.md b/content/te2/Features-at-a-glance.md
deleted file mode 100644
index a983045..0000000
--- a/content/te2/Features-at-a-glance.md
+++ /dev/null
@@ -1,80 +0,0 @@
-# Basic Features
-
-The following article will give you a quick overview of the most important features of Tabular Editor.
-
-## Load/save Model.bim files
-Hitting CTRL+O shows an Open File dialog, which lets you select a Model.bim file to load in Tabular Editor. The file must be of Compatibility Level 1200 or newer (JSON format). CTRL+S saves any changes you make in Tabular Editor back to the file (we recommend backing up your Model.bim files before using Tabular Editor). If you want to deploy the loaded model to an Analysis Services server instance, see [Deployment](/te2/Features-at-a-glance#deployment) below.
-
-## Connect/deploy to SSAS Tabular Databases
-Hitting CTRL+SHIFT+O lets you open a Tabular Model directly from a Tabular Database that has already been deployed. Enter the server address and (optionally) provide a username and password. After hitting "OK", you will be prompted with a list of databases and the server. Select the one you want to load, and click "OK" again.
-
-
-
-The dialog shown also lets you connect to Azure Analysis Services instances, if you provide the full name of the Azure AS instance, starting with "azureas://". The "Local Instance" dropdown, may be used to browse and connect to any running instances of Power BI Desktop or Visual Studio Integrated Workspaces. **Note that although Tabular Editor can make changes to a Power BI model through the TOM, this is not supported by Microsoft and may corrupt your .pbix file. Proceed at your own risk!**
-
-Any time you press CTRL+S after the database has been loaded, the database will be updated with any changes you've made in Tabular Editor. Client tools (Excel, Power BI, DAX Studio, etc.) should be able to immediately view the changes in the database after this. Note that you may need to manually recalculate objects in the model, depending on the changes made, to successfully query the model.
-
-If you want to save the connected model to a Model.bim file, choose "Save As..." from the "File" menu.
-
-## Deployment
-If you want to deploy the currently loaded model to a new database, or overwrite an existing database with the model changes (for example when loading from a Model.bim file), use the Deployment Wizard under "Model" > "Deploy...". The wizard will guide you through the deployment process, and allow you to choose which areas of the model to deploy. More information can be found [here](/te2/Advanced-features#deployment-wizard).
-
-## Hierarchical display
-Objects of the loaded model are shown in the Explorer Tree, on the left side of the screen. By default, all object types (visible tables, roles, relationships, etc.) are shown. If you only want to see tables, measures, columns and hierarchies, go to the "View" menu and toggle off "Show all object types".
-
-
-
-Expanding a table in the "Tables" group, you will find the measures, columns and hierarchies contained in the table presented in their respective display folders by default. This way, objects are arranged similar to how end-users would see them in client tools:
-
-
-
-Use the buttons immediately above the Explorer Tree, to toggle invisible objects, display folders, measures, columns and hierarchies, or to filter objects by name. You can rename an object by selecting it in then hitting F2. This also works for display folders. If you double-click a measure or calculated column, you may edit its [DAX expression](/te2/Advanced-features#dax-expression-editor). Right-clicking will show a context menu, providing a range of handy shortcuts for operations such as setting visibility, perspective inclusion, adding columns to a hierarchy, etc.
-
-## Editing properties
-The Property Grid on the lower right side of the screen, shows most of the properties for the object(s) selected in the Explorer Tree. If you select multiple objects at once, the Property Grid lets you simultaneously edit properties for the selected objects. This is useful for example when setting the Format String property. Examples of properties you can set through the Property Grid:
-
-* Name (you can rename objects directly in the Explorer Tree by hitting F2)
-* Description
-* Display Folder (can also be renamed directly in the Explorer Tree, also [drag/drop](/te2/Features-at-a-glance#drag-and-drop-objects))
-* Hidden (can be set for multiple objects through the right-click context menu in the Explorer Tree)
-* Format String
-
-Different properties exist, depending on what kind of object was selected.
-
-## Duplicate objects and batch renamings
-The right-click context menu in the Explorer Tree lets you duplicate measures and columns. The duplicated objects will have their names suffixed by "copy". Furthermore, you can perform batch renames by selecting multiple objects and right-clicking in the Explorer Tree.
-
-
-
-You may use RegEx for your renamings, and optionally choose whether translations should be renamed as well.
-
-## Drag and drop objects
-By far the most useful feature of Tabular Editor, when working on models with many measures/columns organised in display folders. Check out the animation below:
-
-
-
-Notice how the display folder property of every single object below the folder is changed, when the entire folder is dragged. No more going over measures/columns one-by-one, to change the display folder structure. What you see is what you get.
-
-(This works with translations too!)
-
-## Working with Perspectives and Translations
-You can add/edit existing perspectives and translations (cultures), by clicking the Model node in the Explorer Tree, and locating the relevant properties at the bottom of the property grid. Alternatively, when your Explorer Tree is [showing all object types](/te2/Features-at-a-glance#hierarchical-display), you can view and edit perspectives, cultures and roles directly in the tree.
-
-
-
-You can duplicate an existing perspective, role or translation by opening the right-click menu and choose "Duplicate". This will create an exact copy of the object, which you can then modify to your needs.
-
-To view perspectives and/or translations "in action", use the two dropdown lists in the toolbar near the top of the screen. Choosing a perspective will hide all objects that are not included in that perspective, while choosing a translation will show all objects in the tree using the translated names and display folders. When hitting F2 to change the names of objects/display folders or when dragging objects around in the tree, the changes will only apply to the selected translation.
-
-## Perspectives/Translations within object context
-When one or more objects are selected in the tree, you will find 4 special property collections within the Property Grid:
-
-* **Captions**, **Descriptions** and **Display Folders** shows a list of all cultures in the model, with the translated names, descripions and display folders respectively of the selected objects for each culture.
-* **Perspectives** shows a list of all perspectives in the model, with an indication of whether or nor the selected objects belong to each perspective.
-
-You can use these collections in the Property Grid to change the translations and perspective inclusions for one or more objects at at time.
-
-## Undo/Redo support
-Any change you make in Tabular Editor can be undone using CTRL+Z and subsequently redone using CTRL+Y. There is no limit to the number of operations that can be undone, but the stack is reset when you open a Model.bim file or load a model from a database.
-
-When deleting objects from the model, all translations, perspectives and relationships that reference the deleted objects are also automatically deleted (where as Visual Studio normally shows an error message that the object cannot be deleted). If you make a mistake, you can use the Undo functionality to restore the deleted object, which will also restore any translations, perspectives or relationships that were deleted. Note that even though Tabular Editor can detect [DAX formula dependencies](), Tabular Editor will not warn you in case you delete a measure or column which is used in the DAX expression of another measure or calculated column.
diff --git a/content/te2/Power-BI-Desktop-Integration.md b/content/te2/Power-BI-Desktop-Integration.md
deleted file mode 100644
index 8428f12..0000000
--- a/content/te2/Power-BI-Desktop-Integration.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# Power BI Desktop Integration
-
-As of July 2020, [Power BI Desktop adds support for External Tools](https://docs.microsoft.com/da-dk/power-bi/create-reports/desktop-external-tools). This allows Tabular Editor to perform certain modeling operations when working with Imported or DirectQuery data in Desktop.
-
-
-
-## Prerequisites
-
-- [July 2020 version of Power BI Desktop](https://www.microsoft.com/en-us/download/details.aspx?id=58494) (or newer)
-- [Latest version of Tabular Editor](https://github.com/TabularEditor/TabularEditor/releases/latest)
-- Enable [Enhanced Metadata](https://docs.microsoft.com/en-us/power-bi/connect-data/desktop-enhanced-dataset-metadata) under Power BI Desktop's Preview Features
-
-Also, it is highly recommended that [automatic date/time](https://docs.microsoft.com/en-us/power-bi/transform-model/desktop-auto-date-time) is **disabled** (Power BI Desktop setting under "Data Load").
-
-## Supported Modeling Operations
-
-By default, Tabular Editor will only let you edit a limited number of objects and properties when connected to a Power BI Desktop model. These are:
-
-- Measures (add/remove/edit any property)
-- Calculation Groups and Calculation Items (add/remove/edit any property)
-- Perspectives (add/remove/edit any property)
-- Translations (add/remove)
- - You can apply metadata translations to any object in the model, although be aware that Power BI Desktop does not yet support translations to the default model culture.
-
-**Note:** If you enable the "Allow unsupported Power BI features (experimental)" option under Tabular Editor's File > Preferences dialog, Tabular Editor will let you edit **any** object and property, potentially causing model changes that are not supported by Power BI Desktop, which may cause a crash or a corrupt .pbix file. In this case, Microsoft Support will not be able to help you, so use at your own risk, and keep a backup of your .pbix file just in case.
diff --git a/content/te2/Training-Webinar-for-Tabular-Editor.md b/content/te2/Training-Webinar-for-Tabular-Editor.md
deleted file mode 100644
index 6a392e3..0000000
--- a/content/te2/Training-Webinar-for-Tabular-Editor.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# Video Tutorials
-
-In collaboration with [PowerBI.Tips](https://powerbi.tips/about/) Daniel Otykier conducts 4 hours of training related to the Tabular Editor Program. Watch the following videos below to learn more about this tool and see how to use it in your everyday job.
-
-Webinar Topics
-* Introduction to Tabular Editor
-* Using Scripting
-* Reviewing your data model with the Best Practice Analyzer
-* Deploying your model with Azure DevOps
-
-## Introduction to Tabular Editor
-[](http://www.youtube.com/watch?v=c-jZMzsvKnM "Intro To Tabular Editor")
-
-## Using Scripting
-[](http://www.youtube.com/watch?v=EHs5r3XCkO8 "Intro To Tabular Editor")
-
-## Best Practice Analyzer
-[](http://www.youtube.com/watch?v=5WnN0NG2nBk "Intro To Tabular Editor")
-
-## Deploying with DevOps
-[](http://www.youtube.com/watch?v=fzZgXe3MjhI "Intro To Tabular Editor")
-
-Special thanks to PowerBI.Tips for setting up these free webinars.
-Visit PowerBI.tips on YouTube - https://www.youtube.com/powerbitips
-Visit PowerBI.tips - https://powerbi.tips
diff --git a/content/te2/toc.md b/content/te2/toc.md
deleted file mode 100644
index 2540cb5..0000000
--- a/content/te2/toc.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# Introduction
-## [Getting Started](Getting-Started.md)
-## [Power BI Desktop Integration](Power-BI-Desktop-Integration.md)
-## [Importing Tables](Importing-Tables.md)
-## [Video Tutorials](Training-Webinar-for-Tabular-Editor.md)
-## [Frequently Asked Questions](FAQ.md)
-## [Keyboard Shortcuts](Keyboard-Shortcuts.md)
-
-# Feature Overview
-## [Basic](Features-at-a-glance.md)
-## [Advanced](Advanced-features.md)
-
-# Advanced Topics
-## [Advanced Scripting](Advanced-Scripting.md)
-### @csharp-script-library
-## [FormatDax deprecation](FormatDax.md)
-## [Useful Script Snippets](Useful-script-snippets.md)
-## [Custom Actions](Custom-Actions.md)
-## [Command Line](Command-line-Options.md)
-## [Best Practice Analyzer](Best-Practice-Analyzer.md)
-## [Best Practice Analyzer 2.0](Best-Practice-Analyzer-Improvements.md)
-## [Advanced Filtering](Advanced-Filtering-of-the-Explorer-Tree.md)
-## [Master Model Pattern](Master-model-pattern.md)
-## [Incremental Refresh](incremental-refresh.md)
-## [Importing Tables from Excel](importing-tables-from-excel.md)
\ No newline at end of file
diff --git a/content/te3/desktop-limitations.md b/content/te3/desktop-limitations.md
deleted file mode 100644
index 04e2779..0000000
--- a/content/te3/desktop-limitations.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-uid: desktop-limitations-te3
-title: Power BI Desktop limitations
-author: Morten Lønskov
-updated: 2023-08-21
-applies_to:
- editions:
- - edition: Desktop
- - edition: Business
- - edition: Enterprise
----
-[!include[Desktop limitations](~/content/common/desktop-limitations.md)]
-
-# Next steps
-
-- [Editing a Power BI dataset through the XMLA endpoint](xref:powerbi-xmla)
diff --git a/content/te3/features/images/customizing-pivot-grids.png b/content/te3/features/images/customizing-pivot-grids.png
deleted file mode 100644
index 75031d2..0000000
Binary files a/content/te3/features/images/customizing-pivot-grids.png and /dev/null differ
diff --git a/content/te3/features/images/show-fields-pivot.png b/content/te3/features/images/show-fields-pivot.png
deleted file mode 100644
index 51fbc6b..0000000
Binary files a/content/te3/features/images/show-fields-pivot.png and /dev/null differ
diff --git a/content/te3/other/te3-eula.md b/content/te3/other/te3-eula.md
deleted file mode 100644
index 41e10bf..0000000
--- a/content/te3/other/te3-eula.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-uid: te3-eula
-title: Standard License Terms
-author: Søren Toft Joensen
-updated: 2021-07-10
----
-# Tabular Editor 3 Standard License Terms
-
-The latest version of our license terms is always available on https://tabulareditor.com/license-terms
diff --git a/content/te3/toc.md b/content/te3/toc.md
deleted file mode 100644
index 75b6c86..0000000
--- a/content/te3/toc.md
+++ /dev/null
@@ -1,92 +0,0 @@
-# Introduction
-## @getting-started
-## @whats-new
-## @editions
-## @desktop-limitations-te3
-
-## Power BI XMLA Endpoint
-### @powerbi-xmla
-### @powerbi-xmla-pbix-workaround
-## @proxy-settings
-
-# Documentation
-## User interface
-### @user-interface
-### @tom-explorer-view
-### @bpa-view
-### @messages-view
-### @data-refresh-view
-### @macros-view
-### @find-replace
-
-## Features
-### @csharp-scripts
-### @deployment
-### @dax-debugger
-### @dax-editor
-### @dax-optimizer-integration
-### @dax-package-manager
-### @dax-scripts
-### @dax-query
-### @diagram-view
-### @metadata-translation-editor
-### @perspective-editor
-### @pivot-grid
-### @table-groups
-### @code-actions
-
-## Files formats
-### @supported-files
-### @tmdl
-## @preferences
-## @shortcuts
-## @user-options
-## @security-privacy
-
-# Tutorials and walkthroughs
-
-## Connect to a Model
-### @workspace-mode
-
-## Create a New Model
-### @new-as-model
-### @new-pbi-model
-### @direct-lake-guidance
-
-## Adding Tables & Data Sources
-### @importing-tables
-### @connecting-to-azure-databricks
-
-## Configuring Data Security
-### @data-security-about
-### @data-security-setup-rls
-### @data-security-setup-ols
-### @data-security-testing
-
-## Incremental Refresh
-### @incremental-refresh-about
-### @incremental-refresh-modify
-### @incremental-refresh-setup
-### @incremental-refresh-schema
-### @incremental-refresh-workspace-mode
-
-## Advanced Modelling
-### @udfs
-### @calendars
-
-## Automation with C# Scripting
-### @creating-macros
-### @csharp-script-library
-
-# Troubleshooting
-## @direct-lake-entity-updates-reverting
-## @locale-not-supported
-
-# Other resources
-## @downloads
-## @roadmap
-
-# Legal
-## @te3-eula
-## @third-party-notices
-## @privacy-policy
diff --git a/content/te3/tutorials/importing-tables.md b/content/te3/tutorials/importing-tables.md
deleted file mode 100644
index 10ae6f9..0000000
--- a/content/te3/tutorials/importing-tables.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-uid: importing-tables
-title: Importing Tables
-author: Daniel Otykier
-updated: 2021-09-06
-applies_to:
- editions:
- - edition: Desktop
- - edition: Business
- - edition: Enterprise
----
-# (Tutorial) Importing Tables
-
-[!include[importing-tables](~/content/te3/import-tables.partial.md)]
\ No newline at end of file
diff --git a/content/te3/tutorials/workspace-mode.md b/content/te3/tutorials/workspace-mode.md
deleted file mode 100644
index 7e7c8a0..0000000
--- a/content/te3/tutorials/workspace-mode.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-uid: workspace-mode
-title: Workspace Mode
-author: Daniel Otykier
-updated: 2021-09-06
-applies_to:
- editions:
- - edition: Desktop
- none: x
- - edition: Business
- - edition: Enterprise
----
-# (Walkthrough) Workspace Mode
-[!include[workspace-mode](~/content/te3/workspace-mode.partial.md)]
\ No newline at end of file
diff --git a/content/te3/views/bpa-view.md b/content/te3/views/bpa-view.md
deleted file mode 100644
index 7050e9b..0000000
--- a/content/te3/views/bpa-view.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-uid: bpa-view
-title: Best Practice Analyzer view
-author: Daniel Otykier
-updated: 2021-09-08
-applies_to:
- editions:
- - edition: Desktop
- - edition: Business
- - edition: Enterprise
----
-[!include[using-bpa](~/content/common/using-bpa.md)]
diff --git a/content/toc.yml b/content/toc.yml
index feebe1f..8b3cef9 100644
--- a/content/toc.yml
+++ b/content/toc.yml
@@ -1,17 +1,26 @@
- name: Home
href: index.md
-- name: TE2 Docs
- href: te2/
- homepage: te2/Getting-Started.md
-- name: TE3 Docs
- href: te3/
- homepage: te3/getting-started.md
-- name: Common features
- href: common/
- homepage: common/common-features.md
-- name: TE3 Onboarding Guide
- href: onboarding/
- homepage: onboarding/index.md
+- name: Getting started
+ href: getting-started/
+ homepage: getting-started/index.md
+- name: Features
+ href: features/
+ homepage: features/index.md
+- name: How-tos
+ href: how-tos/
+ homepage: how-tos/index.md
+- name: Tutorials
+ href: tutorials/
+ homepage: tutorials/index.md
+- name: References
+ href: references/
+ homepage: references/index.md
+- name: Troubleshooting
+ href: troubleshooting/
+ homepage: troubleshooting/index.md
+- name: Security
+ href: security/
+ homepage: security/index.md
- name: API
href: api/
homepage: api/index.md
\ No newline at end of file
diff --git a/content/te2/Maintaining-Calculations-using-Scripting.md b/content/todo/Maintaining-Calculations-using-Scripting.md
similarity index 100%
rename from content/te2/Maintaining-Calculations-using-Scripting.md
rename to content/todo/Maintaining-Calculations-using-Scripting.md
diff --git a/content/onboarding/as-cicd.md b/content/todo/as-cicd.md
similarity index 100%
rename from content/onboarding/as-cicd.md
rename to content/todo/as-cicd.md
diff --git a/content/onboarding/powerbi-cicd.md b/content/todo/powerbi-cicd.md
similarity index 100%
rename from content/onboarding/powerbi-cicd.md
rename to content/todo/powerbi-cicd.md
diff --git a/content/todo/te2-advanced.md b/content/todo/te2-advanced.md
new file mode 100644
index 0000000..7cd22ae
--- /dev/null
+++ b/content/todo/te2-advanced.md
@@ -0,0 +1,6 @@
+## View Table Partitions
+TODO
+## DAX Expression Editor
+TODO
+## Script Editor
+TODO (For now, please view [this article](../how-tos/Advanced-Scripting.md))
\ No newline at end of file
diff --git a/content/te3/troubleshooting/calendar-blank-value.md b/content/troubleshooting/calendar-blank-value.md
similarity index 90%
rename from content/te3/troubleshooting/calendar-blank-value.md
rename to content/troubleshooting/calendar-blank-value.md
index 31722b5..0441b2d 100644
--- a/content/te3/troubleshooting/calendar-blank-value.md
+++ b/content/troubleshooting/calendar-blank-value.md
@@ -4,10 +4,17 @@ title: Calendar function blank date error
author: Morten Lønskov
updated: 2025-10-20
applies_to:
- editions:
- - edition: Desktop
- - edition: Business
- - edition: Enterprise
+ products:
+ - product: Tabular Editor 2
+ none: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
---
# Calendar function blank date error
diff --git a/content/te3/troubleshooting/direct-lake-entity-updates-reverting.md b/content/troubleshooting/direct-lake-entity-updates-reverting.md
similarity index 96%
rename from content/te3/troubleshooting/direct-lake-entity-updates-reverting.md
rename to content/troubleshooting/direct-lake-entity-updates-reverting.md
index 70aef52..164e251 100644
--- a/content/te3/troubleshooting/direct-lake-entity-updates-reverting.md
+++ b/content/troubleshooting/direct-lake-entity-updates-reverting.md
@@ -4,12 +4,17 @@ title: Entity Name Changes Revert in Direct Lake Models
author: Morten Lønskov
updated: 2025-10-14
applies_to:
- editions:
- - edition: Desktop
- none: x
- - edition: Business
- none: x
- - edition: Enterprise
+ products:
+ - product: Tabular Editor 2
+ none: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ none: true
+ - edition: Business
+ none: true
+ - edition: Enterprise
+ full: true
---
# Entity Name Changes Revert in Direct Lake Models
@@ -310,7 +315,8 @@ public class BatchEntityEditor : Form
}
}
```
-> [!NOTE] The script was generated using an LLM for code assistance, but has been tested by the Tabular Editor team.
+> [!NOTE]
+> The script was generated using an LLM for code assistance, but has been tested by the Tabular Editor team.
Running the script updates only the tables that receive a new entity name. After the script finishes, review the changes, save the model, and refresh in Power BI to confirm the metadata persists.
diff --git a/content/troubleshooting/index.md b/content/troubleshooting/index.md
new file mode 100644
index 0000000..ab99628
--- /dev/null
+++ b/content/troubleshooting/index.md
@@ -0,0 +1,15 @@
+# Troubleshooting
+
+This section contains troubleshooting guides and solutions for common issues.
+
+## In this section
+
+- @licensing-activation - Resolving license and activation issues
+- @proxy-settings - Proxy setting issues
+- @locale-not-supported - Locale Not Supported
+- @calendar-blank-value - Calendar function blank date error
+- @direct-lake-entity-updates-reverting - Entity Name Changes Revert in Direct Lake Models
+
+---
+
+*Find solutions to common problems and get help when needed.*
\ No newline at end of file
diff --git a/content/te3/index.md b/content/troubleshooting/licensing-activation.md
similarity index 84%
rename from content/te3/index.md
rename to content/troubleshooting/licensing-activation.md
index 6ddc56a..7655691 100644
--- a/content/te3/index.md
+++ b/content/troubleshooting/licensing-activation.md
@@ -1,13 +1,22 @@
---
-title: Tabular Editor 3
+uid: licensing-activation
+title: Install and Activate Tabular Editor 3
author: Daniel Otykier
+applies_to:
+ products:
+ - product: Tabular Editor 2
+ none: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
---
# Tabular Editor 3
-This is the documentation site for Tabular Editor 3 - the ultimate productivity tool for Analysis Services and Power BI data models.
-
-Use the menu on the left side to navigate between topics.
-
## Installation
Download the latest version of Tabular Editor 3 from our [downloads page](xref:downloads).
@@ -27,13 +36,13 @@ Tabular Editor 3 is commercial software. Visit our [home page](https://tabulared
The first time you launch Tabular Editor 3 on a new machine, you are prompted to activate the product.
-
+
### Activating using an existing license key
Once you purchase a license for Tabular Editor 3, you should receive an e-mail with a 25-character string which is your license key. When prompted, enter the license key and hit "Next >" to activate the product.
-
+
> [!NOTE]
> For multi-user license types, you will need to enter your e-mail address in addition to the license key. Tabular Editor 3 will prompt you to do so, if the license key you enter represents a multi-user license.
@@ -49,7 +58,7 @@ If you haven't used Tabular Editor 3 before, you are eligible to a free 30-day t
When Tabular Editor 3 is activated, you may change your license key in the Help menu by choosing "About Tabular Editor".
-
+
In the dialog, select "Change license key". Note that this option is only available if no model is loaded in Tabular Editor. IF you already loaded a model you can close it under File > Close model.
@@ -67,7 +76,7 @@ You can also use `regedit.exe` (Windows Registry Editor) and navigate to `HKEY_C
A system administrator may also proactively assign Tabular Editor 3 licenses to a machine by specifying the **LicenseKey** and **User** values under each user’s `SOFTWARE\Kapacity\Tabular Editor 3` registry key.
-
+
### Changing a license key through the registry
@@ -85,10 +94,4 @@ Alternatively, run the following command in a Windows Command Prompt (Start > Ru
REG DELETE "HKCU\Software\Kapacity\Tabular Editor 3" /va
```
-The next time you launch Tabular Editor 3, you will be prompted for a license key, just as when the tool was first installed on the machine.
-
-## Next steps
-
-- [Overview of Tabular Editor 3's user interface](xref:user-interface)
-- [What's new in Tabular Editor 3](whats-new.md)
-- [Tabular Editor 3 Onboarding Guide](xref:onboarding-te3)
\ No newline at end of file
+The next time you launch Tabular Editor 3, you will be prompted for a license key, just as when the tool was first installed on the machine.
\ No newline at end of file
diff --git a/content/te3/troubleshooting/locale-not-supported.md b/content/troubleshooting/locale-not-supported.md
similarity index 83%
rename from content/te3/troubleshooting/locale-not-supported.md
rename to content/troubleshooting/locale-not-supported.md
index c2b92b5..892cb68 100644
--- a/content/te3/troubleshooting/locale-not-supported.md
+++ b/content/troubleshooting/locale-not-supported.md
@@ -4,10 +4,17 @@ title: Locale Not Supported
author: Morten Lønskov
updated: 2025-09-02
applies_to:
- editions:
- - edition: Desktop
- - edition: Business
- - edition: Enterprise
+ products:
+ - product: Tabular Editor 2
+ none: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
---
# Locale Not Supported
You may encounter the warning message:
@@ -56,4 +63,4 @@ Adjust your local system’s regional and language settings to match a supported
- **Recommended settings:**
- **Regional format:** English (United States)
- - **Windows Display Language:** English (United States)
+ - **Windows Display Language:** English (United States)
\ No newline at end of file
diff --git a/content/te3/proxy-settings.md b/content/troubleshooting/proxy-settings.md
similarity index 90%
rename from content/te3/proxy-settings.md
rename to content/troubleshooting/proxy-settings.md
index a488a16..3699cbf 100644
--- a/content/te3/proxy-settings.md
+++ b/content/troubleshooting/proxy-settings.md
@@ -4,10 +4,17 @@ title: Proxy settings
author: Daniel Otykier
updated: 2024-11-07
applies_to:
- editions:
- - edition: Desktop
- - edition: Business
- - edition: Enterprise
+ products:
+ - product: Tabular Editor 2
+ full: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
---
# Proxy settings
@@ -16,7 +23,7 @@ Due to different proxy behavior between .NET Core (used by Tabular Editor 3) and
For example, you might see the following error message when trying to connect to the Power BI service:
-
+
Typical error messages you would see, are:
@@ -30,7 +37,7 @@ Typical error messages you would see, are:
When this happens, the first thing you should try is to change the proxy settings in Tabular Editor 3. You can find these settings under **Tools > Preferences > Proxy Settings**:
-
+
In most cases, changing the **Proxy Type** from `None` to `System` will resolve the issue. This setting tells Tabular Editor 3 to use the system-wide proxy settings configured in Windows. If you are still experiencing issues, you can try setting the **Proxy Type** to `Custom` and enter the proxy server address and port manually.
diff --git a/content/troubleshooting/toc.md b/content/troubleshooting/toc.md
new file mode 100644
index 0000000..c4e7b75
--- /dev/null
+++ b/content/troubleshooting/toc.md
@@ -0,0 +1,9 @@
+# @licensing-activation
+
+# @proxy-settings
+
+# @locale-not-supported
+
+# @calendar-blank-value
+
+# @direct-lake-entity-updates-reverting
\ No newline at end of file
diff --git a/content/te3/tutorials/calendars.md b/content/tutorials/calendars.md
similarity index 83%
rename from content/te3/tutorials/calendars.md
rename to content/tutorials/calendars.md
index a561677..24cf09c 100644
--- a/content/te3/tutorials/calendars.md
+++ b/content/tutorials/calendars.md
@@ -4,27 +4,33 @@ title: Calendars (Enhanced Time Intelligence)
author: Daniel Otykier
updated: 2025-09-15
applies_to:
- editions:
- - edition: Desktop
- - edition: Business
- - edition: Enterprise
+ products:
+ - product: Tabular Editor 2
+ none: true
+ - product: Tabular Editor 3
+ since: 3.23.0
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
---
# Calendars (Enhanced Time Intelligence)
The September 2025 release of Power BI Desktop introduced a new Public Preview feature called "Enhanced Time Intelligence". This feature lets you define custom calendars in your semantic model, and it also introduces 8 new DAX functions that work with these calendars, enabling week-based time intelligence calculations that were difficult to perform previously.
-Tabular Editor 3 has support for Calendars and the new DAX functions since version 3.23.0.
-
## Defining a Calendar
-
+
1. Right-click on a table in your model (typically a Date table) and select **Create > Calendar...**.
2. Give your calendar a name, e.g. "Fiscal"
Once calendars are added to a table, they will be shown in the TOM Explorer under the **Calendars** node:
-
+
Before you can use a calendar in your DAX calculations, you need to configure it by specifying which columns in the table represent the different calendar attributes. You can do this by right-clicking on the calendar in the TOM Explorer, then choosing the **Edit Column Mappings...** option:
@@ -32,7 +38,7 @@ Before you can use a calendar in your DAX calculations, you need to configure it
For each calendar, you can add one or more so-called **Column Associations**. Each such association maps a column from the table, to a specific **Time Unit** (e.g. Year, Month, Week, etc.). You can also add additional associated columns for each mapping, which are typically used for columns that represent the same time unit, but in a different format. For example, you might have a "Month" column that contains the month number (1-12), and a "Month Name" column that contains the month name ("January", "February", etc.). Both of these columns can be associated with the "MonthOfYear" time unit.
-
+
## Using Calendars in DAX
diff --git a/content/te3/tutorials/connecting-to-azure-databricks.md b/content/tutorials/connecting-to-azure-databricks.md
similarity index 97%
rename from content/te3/tutorials/connecting-to-azure-databricks.md
rename to content/tutorials/connecting-to-azure-databricks.md
index a1b4bcb..baddeba 100644
--- a/content/te3/tutorials/connecting-to-azure-databricks.md
+++ b/content/tutorials/connecting-to-azure-databricks.md
@@ -4,10 +4,18 @@ title: Connecting to Azure Databricks
author: David Bojsen
updated: 2025-08-05
applies_to:
- editions:
- - edition: Desktop
- - edition: Business
- - edition: Enterprise
+ products:
+ - product: Tabular Editor 2
+ none: true
+ - product: Tabular Editor 3
+ since: 3.15.0
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
---
# (Tutorial) Connecting to Azure Databricks
diff --git a/content/tutorials/creating-macros.md b/content/tutorials/creating-macros.md
new file mode 100644
index 0000000..38d8c32
--- /dev/null
+++ b/content/tutorials/creating-macros.md
@@ -0,0 +1,75 @@
+---
+uid: creating-macros
+title: Creating macros
+author: Morten Lønskov
+updated: 2023-12-07
+applies_to:
+ products:
+ - product: Tabular Editor 2
+ full: true
+ note: "Called Custom Actions"
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
+---
+# (Tutorial) Creating macros
+
+Macros are C# scripts that have been saved in Tabular Editor to be easily reused across semantic models.
+Saving a script as a Macro will allow that macro to be used when right clicking on the objects in the TOM Explorer making it simple to apply the script to your model.
+
+> [!NOTE]
+> In Tabular Editor 2, the feature to reuse C# Script is called @custom-actions.
+
+## Creating a Macro
+
+The first step in creating a Macro is to create and test a C# script.
+
+> [!TIP]
+>One easy way to get started with C# scripting is to use the built in record function that lets you record the actions you take in the TOM Explorer.
+>This way you can see how to interact with the different model objects and create reusable scripts.
+>Another way is to reuse existing scripts such as those in our [script library](xref:csharp-script-library).
+>In this tutorial we use the script [Format Numeric Measures](xref:script-format-numeric-measures) to showcase the Macro functionality.
+
+Once the script works according requirements the script can be saved using the toolbar button "Save as Macro" which will open the "Save Macro" window.
+
+
+
+The "Save Macro" window allows three options:
+1. Macro Name: Give the Macro a name and use backslash "\" to create folder path for the macro (See below)
+2. Provide a tooltip for the Macro to remember what it does in detail
+3. Select a context where the Macro should be available.
+
+
+
+In the above example the Macro will be saved in a folder called Formatting\Beginner and the script is called "Format Numeric Measures". It will be saved in the context of measures.
+
+### Macro Context
+Macros are saved in a "valid context" that determines which objects in the model the script can be applied to.
+
+This Macro can then be used when Right Clicking on a measure in the TOM Explorer. The context given while saving the Macro determines which objects will show the Macro when right clicking on that object.
+
+Tabular Editor will suggest a context based on the script that is being saved.
+
+
+
+## Edit a Macro
+
+A macro can be opened by double clicking it in the Macro pane and after editing the C# script saved using _Ctrl + S_ or the Edit Macro button.
+
+
+
+
+## Macro JSON file
+
+Macros are stored in the %LocalAppFolder%/TabularEditor3 as a JSON file called MacroActions.json. For more information on file types in Tabular Editor please see [Supported File Types](xref:supported-files#macroactionsjson)
+
+## Macro file example
+
+An example of a MacroActions.JSON file can be found here. It contains several of the C# scripts from our script library: [Download example MacroActions File](https://raw.githubusercontent.com/TabularEditor/TabularEditorDocs/main/content/assets/file-types/MacroActions.json)
+
+
diff --git a/content/te3/tutorials/data-security/data-security-about.md b/content/tutorials/data-security/data-security-about.md
similarity index 99%
rename from content/te3/tutorials/data-security/data-security-about.md
rename to content/tutorials/data-security/data-security-about.md
index fab2e5c..4731605 100644
--- a/content/te3/tutorials/data-security/data-security-about.md
+++ b/content/tutorials/data-security/data-security-about.md
@@ -4,10 +4,17 @@ title: What is Data Security?
author: Kurt Buhler
updated: 2023-03-02
applies_to:
- editions:
- - edition: Desktop
- - edition: Business
- - edition: Enterprise
+ products:
+ - product: Tabular Editor 2
+ full: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
---
# What is Data Security?
diff --git a/content/te3/tutorials/data-security/data-security-setup-ols.md b/content/tutorials/data-security/data-security-setup-ols.md
similarity index 96%
rename from content/te3/tutorials/data-security/data-security-setup-ols.md
rename to content/tutorials/data-security/data-security-setup-ols.md
index 8601dfe..2e53697 100644
--- a/content/te3/tutorials/data-security/data-security-setup-ols.md
+++ b/content/tutorials/data-security/data-security-setup-ols.md
@@ -4,10 +4,17 @@ title: Setup or Modify OLS
author: Kurt Buhler
updated: 2023-03-02
applies_to:
- editions:
- - edition: Desktop
- - edition: Business
- - edition: Enterprise
+ products:
+ - product: Tabular Editor 2
+ full: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
---
# Setup or Modify Object-Level Security (OLS)
diff --git a/content/te3/tutorials/data-security/data-security-setup-rls.md b/content/tutorials/data-security/data-security-setup-rls.md
similarity index 97%
rename from content/te3/tutorials/data-security/data-security-setup-rls.md
rename to content/tutorials/data-security/data-security-setup-rls.md
index 1e3a80e..f565edd 100644
--- a/content/te3/tutorials/data-security/data-security-setup-rls.md
+++ b/content/tutorials/data-security/data-security-setup-rls.md
@@ -4,10 +4,17 @@ title: Setup or Modify RLS
author: Kurt Buhler
updated: 2023-03-14
applies_to:
- editions:
- - edition: Desktop
- - edition: Business
- - edition: Enterprise
+ products:
+ - product: Tabular Editor 2
+ full: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
---
# Configure Row-Level Security (RLS)
diff --git a/content/te3/tutorials/data-security/data-security-testing.md b/content/tutorials/data-security/data-security-testing.md
similarity index 95%
rename from content/te3/tutorials/data-security/data-security-testing.md
rename to content/tutorials/data-security/data-security-testing.md
index 5aa2a73..1e96927 100644
--- a/content/te3/tutorials/data-security/data-security-testing.md
+++ b/content/tutorials/data-security/data-security-testing.md
@@ -4,11 +4,17 @@ title: Testing RLS/OLS
author: Kurt Buhler
updated: 2023-03-02
applies_to:
- editions:
- - edition: Desktop
- none: x
- - edition: Business
- - edition: Enterprise
+ products:
+ - product: Tabular Editor 2
+ full: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
---
# Testing Data Security with Impersonation
diff --git a/content/te3/tutorials/direct-lake-guidance.md b/content/tutorials/direct-lake-guidance.md
similarity index 91%
rename from content/te3/tutorials/direct-lake-guidance.md
rename to content/tutorials/direct-lake-guidance.md
index 7283850..2f73524 100644
--- a/content/te3/tutorials/direct-lake-guidance.md
+++ b/content/tutorials/direct-lake-guidance.md
@@ -4,12 +4,18 @@ title: Direct Lake Guidance
author: Daniel Otykier
updated: 2024-06-18
applies_to:
- editions:
- - edition: Desktop
- none: x
- - edition: Business
- none: x
- - edition: Enterprise
+ products:
+ - product: Tabular Editor 2
+ partial: true
+ - product: Tabular Editor 3
+ since: 3.22.0
+ editions:
+ - edition: Desktop
+ none: true
+ - edition: Business
+ none: true
+ - edition: Enterprise
+ full: true
---
# Direct Lake Guidance
@@ -64,23 +70,23 @@ For a **Direct Lake on SQL** model, the collation is case-insensitive for querie
To add Direct Lake tables using Tabular Editor 3's Table Import Wizard, choose **Microsoft Fabric Lakehouse**, **Microsoft Fabric Warehouse**, **Microsoft Fabric SQL Database** or **Microsoft Fabric Mirrored Database** as the source:
-
+
After signing in, you will be presented with a list of all available Fabric Lakehouses/Warehouses in workspaces you have access to. Select the one you want to connect to and hit **OK**:
-
+
Unless you want to specify a custom SQL query, or configure the tables for DirectQuery mode, simply hit **Next** to select the tables from a list of tables/views in the source:
-
+
Select the tables/views you wish to import. Note that **non-materialized views** are not supported in Direct Lake on OneLake mode. Attempting to add such a view to the model will result in an error upon saving the model metadata.
-
+
On the last page, choose which mode you want the table partition to be configured with:
-
+
The choices are:
@@ -101,7 +107,7 @@ To manually set up a table for **Direct Lake on OneLake** mode, you need to do t
1. **Create Shared Expression**: Direct Lake tables use "Entity" partitions, which much reference a Shared Expression in the model. Start out by creating this shared expression, if you don't have it already. Name it `DatabaseQuery`:
-
+
2. **Configure Shared Expression**: Set the **Kind** property of the expression you created in step 1 to "M", and set the *Expression** property to the following M query, replacing the IDs in the URL for your Fabric workspace and Lakehouse/Warehouse:
@@ -114,7 +120,7 @@ in
3. **Create Table and Entity Partition**: Create a new table in the model (Alt+5), then expand the table partitions in the TOM Explorer, and create new *Entity Partition*:
- 
+ 
Delete the regular import partition that was automatically created when you created the table.
@@ -130,11 +136,11 @@ in
The final result should look like this:
-
+
5. **Update column metadata**: At this stage, you should be able to use Tabular Editor's **Update Table Schema** feature to update the column metadata for the table. This will automatically retrieve the column names and data types from the Lakehouse/Warehouse:
-
+
Alternatively, manually add Data Columns to the table (Alt+4) and specify the `Name`, `Data Type`, `Source Column` and any other relevant properties for each column.
@@ -160,7 +166,7 @@ If you want to configure a table for **Import** mode while sourcing data from a
1. **Create table**: Create a new table in the model (Alt+5), then expand the table partitions in the TOM Explorer. By default, you should see a single partition of type "Import" created automatically:
-
+
2. **Configure Import Partition**: Set the following M query on the Import Partition:
diff --git a/content/tutorials/importing-tables.md b/content/tutorials/importing-tables.md
new file mode 100644
index 0000000..ca1a157
--- /dev/null
+++ b/content/tutorials/importing-tables.md
@@ -0,0 +1,21 @@
+---
+uid: importing-tables
+title: Importing Tables
+author: Daniel Otykier
+updated: 2021-09-06
+applies_to:
+ products:
+ - product: Tabular Editor 2
+ none: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
+---
+# (Tutorial) Importing Tables
+
+[!include[importing-tables](~/content/features/import-tables.partial.md)]
\ No newline at end of file
diff --git a/content/te3/tutorials/incremental-refresh/incremental-refresh-about.md b/content/tutorials/incremental-refresh/incremental-refresh-about.md
similarity index 94%
rename from content/te3/tutorials/incremental-refresh/incremental-refresh-about.md
rename to content/tutorials/incremental-refresh/incremental-refresh-about.md
index 5f9344f..87a1ac4 100644
--- a/content/te3/tutorials/incremental-refresh/incremental-refresh-about.md
+++ b/content/tutorials/incremental-refresh/incremental-refresh-about.md
@@ -4,15 +4,21 @@ title: What is a Refresh Policy?
author: Kurt Buhler
updated: 2023-01-09
applies_to:
- editions:
- - edition: Desktop
- none: x
- - edition: Business
- - edition: Enterprise
+ products:
+ - product: Tabular Editor 2
+ full: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
---
# What is a Refresh Policy?
-
+
---
@@ -120,7 +126,7 @@ A _Refresh Policy_ determines how the data is partitioned, and which of these Po
### Refresh Policy properties
-
+
Four different kinds of properties make up a basic Refresh Policy:
1. __Incremental window__ __properties__: The period window wherein data is _kept up-to-date_.
@@ -128,7 +134,7 @@ Four different kinds of properties make up a basic Refresh Policy:
3. __Source expressions__: Define table schema and Power Query transformations of the table.
4. __Mode__: Whether `Import` or `Hybrid` tables are used.
-
+
---
@@ -136,7 +142,7 @@ Four different kinds of properties make up a basic Refresh Policy:
In Power BI Desktop, these properties are named differently. Below is an overview of how the properties match the Power BI Desktop user interface.
-
+
---
@@ -152,7 +158,7 @@ In the __*[hybrid](https://learn.microsoft.com/en-us
This is configured with the Mode property when set to Hybrid.
-
+
# [Only Refresh Complete Periods](#tab/completeperiods)
In this configuration, the policy range will not include the current period in the rolling window.
@@ -161,7 +167,7 @@ In the standard configuration of Incremental Refresh, the current period is alwa
This is configured with the IncrementalPeriodsOffset property. In the above example, a value of -1 for an IncrementalGranularity of Day will exclude the current date from the incremental window and thus the data scope; only complete days will be refreshed.
-
+
# [Detect Data Changes](#tab/datachanges)
In this configuration, not all records are refreshed in the incremental window. Instead, records are only refreshed if they change. Detect data changes can further optimize refresh performance when using incremental refresh. To identify data changes you use a _Polling Expression_. A Polling Expression is a separate property that expects a valid M Expression to identify a maximum date from a list of dates.
@@ -189,7 +195,7 @@ in
accountForNu11
```
-
+
***
diff --git a/content/te3/tutorials/incremental-refresh/incremental-refresh-modify.md b/content/tutorials/incremental-refresh/incremental-refresh-modify.md
similarity index 89%
rename from content/te3/tutorials/incremental-refresh/incremental-refresh-modify.md
rename to content/tutorials/incremental-refresh/incremental-refresh-modify.md
index 173ff60..0306805 100644
--- a/content/te3/tutorials/incremental-refresh/incremental-refresh-modify.md
+++ b/content/tutorials/incremental-refresh/incremental-refresh-modify.md
@@ -4,16 +4,22 @@ title: Modify an Existing Refresh Policy
author: Kurt Buhler
updated: 2023-01-09
applies_to:
- editions:
- - edition: Desktop
- none: x
- - edition: Business
- - edition: Enterprise
+ products:
+ - product: Tabular Editor 2
+ full: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
---
# Modifying Incremental Refresh
-
+
---
@@ -35,17 +41,17 @@ Below is a general description of how you modify an existing Refresh Policy:
2. __Select the Table:__ Select the table already configured for Incremental Refresh.
3. __Find 'Refresh Policy' properties:__ In the _Properties_ window, go to the _Refresh Policy_ section.
-
+
4. __Change the property:__ Change the __Property__ specified in the below sections, depending on what you want to change. For an overview of all Refresh Policy properties and what they do, see [here](xref:incremental-refresh-about#overview-of-all-properties).
5. __Apply Changes:__ Deploy the model changes.
4. __Apply Refresh Policy:__ Right-click the table and select _Apply Refresh Policy_.
-
+
7. __Refresh all partitions:__ Shift-click to select all partitions. Right-click and select _Refresh > Full refresh (partition)_. You can right-click the table and select _'Preview data'_ to see the result.
-
+
---
diff --git a/content/te3/tutorials/incremental-refresh/incremental-refresh-schema.md b/content/tutorials/incremental-refresh/incremental-refresh-schema.md
similarity index 91%
rename from content/te3/tutorials/incremental-refresh/incremental-refresh-schema.md
rename to content/tutorials/incremental-refresh/incremental-refresh-schema.md
index 3619949..2cea45c 100644
--- a/content/te3/tutorials/incremental-refresh/incremental-refresh-schema.md
+++ b/content/tutorials/incremental-refresh/incremental-refresh-schema.md
@@ -4,16 +4,22 @@ title: Add or Remove Columns in a Table that uses Incremental Refresh
author: Kurt Buhler
updated: 2023-01-09
applies_to:
- editions:
- - edition: Desktop
- none: x
- - edition: Business
- - edition: Enterprise
+ products:
+ - product: Tabular Editor 2
+ full: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
---
# Modifying Incremental Refresh Table Schemas
-
+
---
@@ -27,17 +33,17 @@ __When adding or removing columns from a table configured with Incremental Refre
1. __Detect schema changes:__ Right-click the table and select _'Update table schema...'_.
-
+
2. __Apply detected schema changes:__ In the _'Apply Schema Changes'_ dialogue, confirm the desired schema changes.
3. __Apply changes:__ Deploy the model changes.
4. __Apply Refresh Policy:__ Right-click the table and select _Apply Refresh Policy_.
-
+
5. __Refresh all partitions:__ Shift-click to select all partitions. Right-click and select _Refresh > Full refresh (partition)_. You can right-click the table and select _'Preview data'_ to see the result.
-
+
---
diff --git a/content/te3/tutorials/incremental-refresh/incremental-refresh-setup.md b/content/tutorials/incremental-refresh/incremental-refresh-setup.md
similarity index 90%
rename from content/te3/tutorials/incremental-refresh/incremental-refresh-setup.md
rename to content/tutorials/incremental-refresh/incremental-refresh-setup.md
index 2d58bc0..f6d8571 100644
--- a/content/te3/tutorials/incremental-refresh/incremental-refresh-setup.md
+++ b/content/tutorials/incremental-refresh/incremental-refresh-setup.md
@@ -4,15 +4,21 @@ title: Set Up a New Refresh Policy
author: Kurt Buhler
updated: 2023-01-09
applies_to:
- editions:
- - edition: Desktop
- none: x
- - edition: Business
- - edition: Enterprise
+ products:
+ - product: Tabular Editor 2
+ full: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
---
# Setting up Incremental Refresh
-
+
---
@@ -47,7 +53,7 @@ To set up Incremental Refresh, you must configure a new Refresh Policy for the t
5. __Enable the Table Refresh Policy:__ In the _'Properties'_ window, set the `EnableRefreshPolicy` property on the table to `True`:
-
+
6. __Configure the Table Refresh:__ Next, select the table for which you want to configure incremental refresh. In the **Expression Editor** window, Select __'Source Expression'__ from the dropdown, insert your Power Query M Expression from step 4 and alter the Power Query M Expression such that there is a filter step on the date column for which you will enable incremental refresh.
@@ -81,7 +87,7 @@ To set up Incremental Refresh, you must configure a new Refresh Policy for the t
8. __Apply Model Changes:__ Save your model (Ctrl+S).
9. __Apply Refresh Policy:__ Right-click on the table and choose "Apply Refresh Policy".
-
+
__That's it!__ At this point, you should see that the Power BI service has automatically generated the partitions on your table, based on the policy you specified. All that's left is to refresh all the partitions.
@@ -89,7 +95,7 @@ To set up Incremental Refresh, you must configure a new Refresh Policy for the t
10. __Refresh all partitions:__ Shift-click to select all partitions. Right-click and select _Refresh > Full refresh (partition)_. You can right-click the table and select _'Preview data'_ to see the result.
-
+
Finally, you can configure the scheduled refresh in Power BI Service. Power BI will automatically handle the partitioning of your table. You can always connect to the remote model to view and validate the partitions, i.e. using the VertiPaq Analyzer.
@@ -209,15 +215,15 @@ If you have configured a native query, it may still be possible to configure and
1. __Author and Save the Native Query:__ Write your native query in SQL Server Management Studio or Azure Data Studio. Include a placeholder `WHERE` clause which filters >= a DateTime parameter, and < another DateTime parameter.
-
+
incremental-refresh-native-query-formatted.png
2. __Replace the Native Query String in the Source Expression:__ Copy the query and replace the existing query, which will be full of characters like (lf) (line feed), (cr) (carraige return) and (n) (new line). Doing this makes the query actually readable and editable without resorting to the Native Query user interface of Power BI Desktop.
-
+
Replace the above text in the `Query` parameter to the below, for example:
-
+
3. __Add `RangeStart` and `RangeEnd`:__ Concatenate "RangeStart" and "RangeEnd" inside of the `WHERE` clause, replacing the placeholder fields and converting the parameters to date with `Date.From` and to string data types using `Date.ToText` with the `Format` option set to `"yyyy-MM-dd`. Don't forget to include single quotes `'` on either side of the concatenation. Below is an example of what the final query would look like:
diff --git a/content/te3/tutorials/incremental-refresh/incremental-refresh-workspace-mode.md b/content/tutorials/incremental-refresh/incremental-refresh-workspace-mode.md
similarity index 83%
rename from content/te3/tutorials/incremental-refresh/incremental-refresh-workspace-mode.md
rename to content/tutorials/incremental-refresh/incremental-refresh-workspace-mode.md
index 2b1f694..276d6fc 100644
--- a/content/te3/tutorials/incremental-refresh/incremental-refresh-workspace-mode.md
+++ b/content/tutorials/incremental-refresh/incremental-refresh-workspace-mode.md
@@ -4,14 +4,18 @@ title: Using Workspace Mode on a Model with Incremental Refresh
author: Kurt Buhler
updated: 2023-01-09
applies_to:
- editions:
- - edition: Desktop
- none: x
- - edition: Business
- - edition: Enterprise
- versions:
- - version: 2.X
- - version: 3.4.2 and earlier
+ products:
+ - product: Tabular Editor 2
+ none: true
+ - product: Tabular Editor 3
+ since: 3.4.2 and earlier
+ editions:
+ - edition: Desktop
+ none: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
---
# Workspace mode and incremental refresh
@@ -22,7 +26,7 @@ applies_to:
---
-
+
---
@@ -37,13 +41,14 @@ Incremental Refresh creates new partitions upon the first scheduled refresh in a
### Workspace Mode is not Recommended
The reason is because _Workspace Mode_ will overwrite the remote model metadata with local metadata files; any out-of-sync changes (like to Policy Range partitions) will be lost. When working with _Workspace Mode_ on these models, you would need to _Apply refresh policy_ for tables using incremental refresh before saving changes every day.
- 
+ 
### Recommendation: Develop & Deploy from Local Metadata
__Instead, it is recommended to develop the model from the local metadata files.__ Changes can be deployed excluding partitions governed by a Refresh Policy, so there is no risk of overwriting the policies created by Power BI. A second read/refresh instance of Tabular Editor can be connected to the remote model for testing purposes.
To deploy the model, go _Model > Deploy..._ which opens the Deployment Wizard. Here you can select whether you want to include partitions governed by Incremental Refresh policies:
- 
+ 
+
By deploying the model without these Policy Range partitions, you are mitigating any potential impact due to out-of-sync incremental refresh partitions between the metadata and remote model.
\ No newline at end of file
diff --git a/content/tutorials/index.md b/content/tutorials/index.md
new file mode 100644
index 0000000..eff1a23
--- /dev/null
+++ b/content/tutorials/index.md
@@ -0,0 +1,22 @@
+# Tutorials
+
+This section contains comprehensive tutorials for learning Tabular Editor.
+
+## In this section
+
+- @calendars - Creating and managing calendar tables
+- @connecting-to-azure-databricks - Database connectivity
+- @creating-macros - Automation with macros
+- @direct-lake-guidance - Working with Direct Lake models
+- @powerbi-xmla - Editing through XMLA endpoint
+- @importing-tables - Data import workflows
+- @new-as-model - Creating AS models
+- @new-pbi-model - Creating Power BI models
+- @udfs - Creating custom functions
+- @workspace-mode-wt - Collaborative development
+- @data-security-about - Row-level and object-level security
+- @incremental-refresh-about - Large dataset management
+
+---
+
+*Navigate using the table of contents to find tutorials for your skill level.*
\ No newline at end of file
diff --git a/content/te3/tutorials/new-as-model.md b/content/tutorials/new-as-model.md
similarity index 95%
rename from content/te3/tutorials/new-as-model.md
rename to content/tutorials/new-as-model.md
index c25c8cf..6de11a0 100644
--- a/content/te3/tutorials/new-as-model.md
+++ b/content/tutorials/new-as-model.md
@@ -4,11 +4,18 @@ title: Create an Analysis Services Model
author: Daniel Otykier
updated: 2021-09-06
applies_to:
- editions:
- - edition: Desktop
- none: x
- - edition: Business
- - edition: Enterprise
+ products:
+ - product: Tabular Editor 2
+ none: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ none: true
+ - edition: Business
+ partial: true
+ note: "Limited to SQL Server Standard Edition"
+ - edition: Enterprise
+ full: true
---
# (Tutorial) Creating your first Analysis Services Model
@@ -27,6 +34,9 @@ This page walks you through the process of creating a new Analysis Services tabu
- 1200 (Works with SQL Server 2016 or newer, and Azure Analysis Services)
- 1400 (Works with SQL Server 2017 or newer, and Azure Analysis Services)
- 1500 (Works with SQL Server 2019 or Azure Analysis Services)
+ - 1600 (Works with SQL Server 2022 or Azure Analysis Services)
+ - 1700 (Works with SQL Server 2025 or Azure Analysis Services)
+
- For the best development experience, check the "Use workspace database" option. This requires that you have an instance of Analysis Services available on which your workspace database will be deployed. This could be a local or a remote instance of SQL Server Analysis Services or it could be an instance of Azure Analysis Services. When you click OK, you will be prompted to enter the connection string for the Analysis Services instance in which you want the workspace database created.
[Learn more about workspace databases](xref:workspace-mode).
diff --git a/content/te3/tutorials/new-pbi-model.md b/content/tutorials/new-pbi-model.md
similarity index 64%
rename from content/te3/tutorials/new-pbi-model.md
rename to content/tutorials/new-pbi-model.md
index cf09cfe..485b4f8 100644
--- a/content/te3/tutorials/new-pbi-model.md
+++ b/content/tutorials/new-pbi-model.md
@@ -4,18 +4,25 @@ title: Create a Power BI Semantic Model
author: Daniel Otykier
updated: 2021-09-06
applies_to:
- editions:
- - edition: Desktop
- none: x
- - edition: Business
- - edition: Enterprise
+ products:
+ - product: Tabular Editor 2
+ none: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ none: true
+ - edition: Business
+ partial: true
+ note: "Premium Per User XMLA Endpoints Only"
+ - edition: Enterprise
+ full: true
---
# (Tutorial) Creating your first Power BI semantic model
This page walks you through the process of creating a new Power BI semantic model from scratch using Tabular Editor 3.
> [!IMPORTANT]
-> Tabular Editor 3 Business Edition is limited to [Power BI Premium Per User](https://docs.microsoft.com/en-us/power-bi/admin/service-premium-per-user-faq). For Power BI Premium or Embedded capacity, you must upgrade to Tabular Editor 3 Enterprise Edition. In either case, the Power BI workspace in which the semantic model is to be deployed, must have its [XMLA read/write endpoint enabled](https://docs.microsoft.com/en-us/power-bi/admin/service-premium-connect-tools#enable-xmla-read-write).
+> Tabular Editor 3 Business Edition is limited to [Power BI Premium Per User](https://docs.microsoft.com/en-us/power-bi/admin/service-premium-per-user-faq). For Fabric/Power BI Premium or Embedded capacity, you must upgrade to Tabular Editor 3 Enterprise Edition. In either case, the Power BI workspace in which the semantic model is to be deployed, must have its [XMLA read/write endpoint enabled](https://docs.microsoft.com/en-us/power-bi/admin/service-premium-connect-tools#enable-xmla-read-write).
>
> Tabular Editor 3 Desktop Edition does not have any support for Power BI semantic models.
>
@@ -25,7 +32,7 @@ This page walks you through the process of creating a new Power BI semantic mode
1. From the File menu, choose New > Model... or hit `CTRL+N`
-
+
- Provide a name for your model or use the default value. Then, set the compatibility level to "1609 (Power BI / Fabric)".
- For the best development experience, check the "Use workspace database" option. This requires that you have a development workspace available in Power BI, with XMLA read/write enabled. When you click OK, you will be prompted to enter the connection string for the Power BI workspace in which you want the workspace database created.
diff --git a/content/te3/powerbi-xmla.md b/content/tutorials/powerbi-xmla.md
similarity index 83%
rename from content/te3/powerbi-xmla.md
rename to content/tutorials/powerbi-xmla.md
index 9833fb9..038d45f 100644
--- a/content/te3/powerbi-xmla.md
+++ b/content/tutorials/powerbi-xmla.md
@@ -4,12 +4,18 @@ title: Editing through XMLA endpoint
author: Daniel Otykier
updated: 2021-10-01
applies_to:
- editions:
- - edition: Desktop
- none: x
- - edition: Business
- partial: Tabular Editor 3 Business Edition only allows connecting to the XMLA endpoint of Premium-Per-User (PPU) workspaces.
- - edition: Enterprise
+ products:
+ - product: Tabular Editor 2
+ full: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ none: true
+ - edition: Business
+ partial: true
+ note: Premium Per User XMLA Endpoints Only
+ - edition: Enterprise
+ full: true
---
# Editing a Power BI dataset through the XMLA endpoint
@@ -29,9 +35,6 @@ Tabular Editor requires the XMLA endpoint to allow both read/write access. This
When connecting to a dataset through the XMLA endpoint, all data modeling operations supported by the [Tabular Object Model (TOM)](https://docs.microsoft.com/en-us/analysis-services/tom/introduction-to-the-tabular-object-model-tom-in-analysis-services-amo?view=asallproducts-allversions) are available for editing. In other words, the [Power BI Desktop Limitations](xref:desktop-limitations) do not apply when editing a dataset through the XMLA endpoint of the Power BI Service.
-> [!WARNING]
-> Once a change is made to a Power BI dataset through the XMLA endpoint, it will not be possible to download the dataset as a .pbix file. [More information](https://docs.microsoft.com/en-us/power-bi/admin/service-premium-connect-tools#power-bi-desktop-authored-datasets).
-> Please see [Creating PBIX File from XMLA Endoint](xref:powerbi-xmla-pbix-workaround) for a workaround
## Workflow
diff --git a/content/tutorials/toc.md b/content/tutorials/toc.md
new file mode 100644
index 0000000..5e5849d
--- /dev/null
+++ b/content/tutorials/toc.md
@@ -0,0 +1,33 @@
+# Create a New Model
+## @new-as-model
+## @new-pbi-model
+## @direct-lake-guidance
+
+# Connect to a Model
+## @powerbi-xmla
+## @workspace-mode
+
+# Adding Tables & Data Sources
+## @importing-tables
+## @connecting-to-azure-databricks
+
+# Configuring Data Security
+## @data-security-about
+## @data-security-setup-rls
+## @data-security-setup-ols
+## @data-security-testing
+
+# Incremental Refresh
+## @incremental-refresh-about
+## @incremental-refresh-modify
+## @incremental-refresh-setup
+## @incremental-refresh-schema
+## @incremental-refresh-workspace-mode
+
+# Advanced Modelling
+## @udfs
+## @calendars
+
+# Automation with C# Scripting
+## @creating-macros
+## @csharp-script-library
diff --git a/content/te3/tutorials/udfs.md b/content/tutorials/udfs.md
similarity index 93%
rename from content/te3/tutorials/udfs.md
rename to content/tutorials/udfs.md
index 963d555..1f1002c 100644
--- a/content/te3/tutorials/udfs.md
+++ b/content/tutorials/udfs.md
@@ -4,10 +4,18 @@ title: DAX User-Defined Functions
author: Daniel Otykier
updated: 2025-09-15
applies_to:
- editions:
- - edition: Desktop
- - edition: Business
- - edition: Enterprise
+ products:
+ - product: Tabular Editor 2
+ partial: true
+ - product: Tabular Editor 3
+ since: 3.23.0
+ editions:
+ - edition: Desktop
+ full: true
+ - edition: Business
+ full: true
+ - edition: Enterprise
+ full: true
---
# DAX User-Defined Functions
@@ -39,10 +47,10 @@ First, verify your model's compatibility level is appropriate for UDFs:
1. Open your model in Tabular Editor 3
2. Select the root node ("Model") in the **TOM Explorer**
-2. In the **Properties** panel, expand the **Database** property, then check that the **Compatibility Level** is set to **1702** or higher
-3. If needed, update the compatibility level and save your model
+3. In the **Properties** panel, expand the **Database** property, then check that the **Compatibility Level** is set to **1702** or higher
+4. If needed, update the compatibility level and save your model
-
+
### Step 2: Add a New Function
@@ -51,13 +59,13 @@ First, verify your model's compatibility level is appropriate for UDFs:
3. Select **Create > User-Defined Function**
4. Give your function a descriptive name (spaces and special characters are not allowed; underscores and periods are permitted)
-
+
You can also add a UDFs through the **Model > Add User-Defined Function** menu option.
Alternatively, you can create UDFs directly from the **DEFINE** section of a DAX query, by hitting F7 (Apply) or using the **Query > Apply** menu option. If your query contains multiple query-scoped definitions, you can also select just a subset of them and hit F8 (Apply Selection).
-
+
### Step 3: Define Your Function
@@ -118,7 +126,7 @@ ROW(
Calling the above function with a measure reference for each parameter, e.g. `MyFunction([Some Measure], [Some Measure])`, will yield different results for the `y` parameter depending on the current filter context, as shown in the screenshot below:
-
+
In addition to specifying the evaluation mode, you can also constrain the parameter type by specifying a data type before the evaluation mode, e.g. `x: INT64 VAL` or `y: TABLE EXPR`.
@@ -154,7 +162,7 @@ MEASURE 'Date'[New Measure] = MyFuncRenamed(1,2)
Tabular Editor 3 adds powerful new features for working with UDFs in DAX queries. We already mentioned above how you can "apply" a UDF from the **DEFINE** section of a DAX query, to have it become a permanent part of your model. In addition, if using a UDF inside a DAX query, you can right-click on the function invocation and choose **Define Function** to automatically generate the function definition in the **DEFINE** section of your query:
-
+
As can be seen from the screen above, the following options are available when right-clicking on a UDF invocation:
@@ -180,7 +188,7 @@ When you rename a UDF, Tabular Editor 3 automatically updates all references thr
The **Peek Definition** feature works with UDFs, allowing you to quickly view the function's implementation without navigating away from your current context.
-
+
### Dependencies View
@@ -227,7 +235,7 @@ In Tabular Editor, UDFs also have a "Namespace" *property*, allowing you to cust
Tabular Editor 3 automatically picks up any comments and displays them appropriately in autocomplete suggestions and tooltips.
-
+
## Common Use Cases
diff --git a/content/tutorials/workspace-mode.md b/content/tutorials/workspace-mode.md
new file mode 100644
index 0000000..ec8fad8
--- /dev/null
+++ b/content/tutorials/workspace-mode.md
@@ -0,0 +1,21 @@
+---
+uid: workspace-mode-wt
+title: Workspace Mode
+author: Daniel Otykier
+updated: 2021-09-06
+applies_to:
+ products:
+ - product: Tabular Editor 2
+ none: true
+ - product: Tabular Editor 3
+ editions:
+ - edition: Desktop
+ none: true
+ - edition: Business
+ partial: true
+ note: Premium Per User XMLA Endpoints Only
+ - edition: Enterprise
+ full: true
+---
+# (Walkthrough) Workspace Mode
+[!include[workspace-mode](../features/workspace-mode.partial.md)]
\ No newline at end of file
diff --git a/content/whats-new/index.html b/content/whats-new/index.html
index ea48366..8516fc0 100644
--- a/content/whats-new/index.html
+++ b/content/whats-new/index.html
@@ -138,4 +138,4 @@ The Tabular Editor Team will be at the following conferences:
}