From 0f154828fa4a276cb7ad93217ebf2aafc7df83a3 Mon Sep 17 00:00:00 2001 From: Morten Lonskov Date: Fri, 26 Jan 2024 10:49:47 +0100 Subject: [PATCH 1/4] Add field parameter script --- .../Beginner/script-create-field-parameter.md | 68 +++++++++++++++++++ .../csharp-script-library-beginner.md | 1 + common/toc.md | 1 + 3 files changed, 70 insertions(+) create mode 100644 common/CSharpScripts/Beginner/script-create-field-parameter.md diff --git a/common/CSharpScripts/Beginner/script-create-field-parameter.md b/common/CSharpScripts/Beginner/script-create-field-parameter.md new file mode 100644 index 00000000..f3bc4c50 --- /dev/null +++ b/common/CSharpScripts/Beginner/script-create-field-parameter.md @@ -0,0 +1,68 @@ +--- +uid: create-field-parameter +title: Create Field Parameter +author: Daniel Otykier +updated: 2024-01-27 +applies_to: + versions: + - version: 2.x + - version: 3.x +--- +# Create Field Parameters in + +## Script Purpose +If you want to create field parameters in a Power BI model using Tabular Editor or in a Direct Lake model. + +> [!TIP] +> Want to see the script in action, check out this [Guy in a Cube video](https://www.youtube.com/watch?v=Cg6zRhwF-Ro) where Patrick LeBlanc explains how to use it step by step. + + +## Script + +### Select Columns or Measures to create a field parameter table +```csharp +// Before running the script, select the measures or columns that you +// would like to use as field parameters (hold down CTRL to select multiple +// objects). Also, you may change the name of the field parameter table +// below. NOTE: If used against Power BI Desktop, you must enable unsupported +// features under File > Preferences (TE2) or Tools > Preferences (TE3). +var name = "Parameter"; + +if(Selected.Columns.Count == 0 && Selected.Measures.Count == 0) throw new Exception("No columns or measures selected!"); + +// Construct the DAX for the calculated table based on the current selection: +var objects = Selected.Columns.Any() ? Selected.Columns.Cast() : Selected.Measures; +var dax = "{\n " + string.Join(",\n ", objects.Select((c,i) => string.Format("(\"{0}\", NAMEOF('{1}'[{0}]), {2})", c.Name, c.Table.Name, i))) + "\n}"; + +// Add the calculated table to the model: +var table = Model.AddCalculatedTable(name, dax); + +// In TE2 columns are not created automatically from a DAX expression, so +// we will have to add them manually: +var te2 = table.Columns.Count == 0; +var nameColumn = te2 ? table.AddCalculatedTableColumn(name, "[Value1]") : table.Columns["Value1"] as CalculatedTableColumn; +var fieldColumn = te2 ? table.AddCalculatedTableColumn(name + " Fields", "[Value2]") : table.Columns["Value2"] as CalculatedTableColumn; +var orderColumn = te2 ? table.AddCalculatedTableColumn(name + " Order", "[Value3]") : table.Columns["Value3"] as CalculatedTableColumn; + +if(!te2) { + // Rename the columns that were added automatically in TE3: + nameColumn.IsNameInferred = false; + nameColumn.Name = name; + fieldColumn.IsNameInferred = false; + fieldColumn.Name = name + " Fields"; + orderColumn.IsNameInferred = false; + orderColumn.Name = name + " Order"; +} +// Set remaining properties for field parameters to work +// See: https://twitter.com/markbdi/status/1526558841172893696 +nameColumn.SortByColumn = orderColumn; +nameColumn.GroupByColumns.Add(fieldColumn); +fieldColumn.SortByColumn = orderColumn; +fieldColumn.SetExtendedProperty("ParameterMetadata", "{\"version\":3,\"kind\":2}", ExtendedPropertyType.Json); +fieldColumn.IsHidden = true; +orderColumn.IsHidden = true; +``` +### Explanation +Before running the script the user has to select the measures or columns in the TOM Explorer they wish to have in their field parameter table. +The selected objects are then inserted into a calculated table which is then configured as a field parameter table automatically. + diff --git a/common/CSharpScripts/csharp-script-library-beginner.md b/common/CSharpScripts/csharp-script-library-beginner.md index c875a52b..55ae95e8 100644 --- a/common/CSharpScripts/csharp-script-library-beginner.md +++ b/common/CSharpScripts/csharp-script-library-beginner.md @@ -27,5 +27,6 @@ These are more basic scripts that are easy to understand or modify. They have a | [Create Table Groups](Beginner/script-create-table-groups.md) | Organize the model into Table Groups | When you want to have an automatic organization of your tables using the table group feature of Tabular Editor 3 | | [Format Numeric Measures](Beginner/script-format-numeric-measures.md) | Formats the chosen measures | When you want to quickly apply a format string to the currently selected measures | | [Show Data Source Dependencies](Beginner/script-show-data-source-dependencies.md) | Shows dependencies for data sources | For explicit (legacy) data sources it can be hard to know exactly where they are used. This script shows you which partition reference the chosen data source | +| [Create Field Parameters](Beginner/script-create-field-parameter.md) | Quickly create a field parameter table | Choose the objects that should be in the field parameter and the script will take care of the rest | diff --git a/common/toc.md b/common/toc.md index bd1145e8..0ecfe8fd 100644 --- a/common/toc.md +++ b/common/toc.md @@ -24,6 +24,7 @@ #### @script-create-measure-table #### @script-format-numeric-measures #### @script-create-table-groups +#### @create-field-parameter ### @script-library-advanced From 78a8b50e71b48dbb0357e012594c4a9999039eff Mon Sep 17 00:00:00 2001 From: Morten Lonskov Date: Fri, 26 Jan 2024 10:50:12 +0100 Subject: [PATCH 2/4] Update whatsnew with field parameter GIAC video --- whats-new/index.html | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/whats-new/index.html b/whats-new/index.html index cd11ad69..8d115259 100644 --- a/whats-new/index.html +++ b/whats-new/index.html @@ -109,8 +109,8 @@

Community

Ask questions, suggest enhancements and help other TE fans get their answers at our GitHub community:

Articles

Share your favorite blog or SoMe post with the community

+

Video

+

Other resources

  • GitHub issue tracker (TE3)
  • From d2c336e5b44b391b3b8c580458ac515d3646f982 Mon Sep 17 00:00:00 2001 From: Morten Lonskov Date: Fri, 26 Jan 2024 13:28:10 +0100 Subject: [PATCH 3/4] Fix typo --- te3/powerbi-xmla-pbix-workaround.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/te3/powerbi-xmla-pbix-workaround.md b/te3/powerbi-xmla-pbix-workaround.md index 5406fb74..ca17d4d9 100644 --- a/te3/powerbi-xmla-pbix-workaround.md +++ b/te3/powerbi-xmla-pbix-workaround.md @@ -1,6 +1,6 @@ --- uid: powerbi-xmla-pbix-workaround -title: Creating PBIX File from XMLA Endoint. +title: Creating PBIX File from XMLA Endpoint. author: Morten Lønskov updated: 2023-10-18 applies_to: From 2c6e271c454f9b3e4b330ba06d7b183012c13255 Mon Sep 17 00:00:00 2001 From: Morten Lonskov Date: Sun, 28 Jan 2024 20:41:04 +0100 Subject: [PATCH 4/4] Remove web authoring warning --- common/Datasets/direct-lake-dataset.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/common/Datasets/direct-lake-dataset.md b/common/Datasets/direct-lake-dataset.md index 00d3f509..111cecbf 100644 --- a/common/Datasets/direct-lake-dataset.md +++ b/common/Datasets/direct-lake-dataset.md @@ -18,9 +18,6 @@ applies_to: # Direct Lake Semantic Models Direct Lake semantic models connect directly to data sources stored in [Fabric One Lake](https://learn.microsoft.com/en-us/fabric/onelake/onelake-overview). -> [!IMPORTANT] -> Changing a Direct Lake dataset through the XMLA endpoint will block your ability to change the Direct Lake dataset inside the Fabric Service. The Direct Lake model can then only be opened and edited through the XMLA endpoint. This is one of the current limitations of this preview feature. - Tabular Editor 3 can create and connect to this type of dataset. For a tutorial on this please refer to our blog article: [Direct Lake semantic models: How to use them with Tabular Editor](https://blog.tabulareditor.com/2023/09/26/fabric-direct-lake-with-tabular-editor-part-2-creation/). Tabular Editor 3 can create direct lake semantic models with both the Lakehouse and Datawarehouse SQL Endpoint.