diff --git a/content/_apiSource/TOMWrapper.dll b/content/_apiSource/TOMWrapper.dll
index 36c2c28..3e4c2b0 100644
Binary files a/content/_apiSource/TOMWrapper.dll and b/content/_apiSource/TOMWrapper.dll differ
diff --git a/content/_apiSource/TOMWrapper.xml b/content/_apiSource/TOMWrapper.xml
index a04f964..d16048c 100644
--- a/content/_apiSource/TOMWrapper.xml
+++ b/content/_apiSource/TOMWrapper.xml
@@ -343,6 +343,13 @@
+
+
+ Scripts the specified objects as TMDL (only produces meaningful output when all objects belong to the same parent)
+
+
+
+
Scripts the specified object as TMDL, with an option to use spaces or tabs for indentation.
@@ -351,6 +358,14 @@
True to use spaces for indentation, otherwise tabs
+
+
+ Scripts the specified objects as TMDL (only produces meaningful output when all objects belong to the same parent)
+
+
+ True to use spaces for indentation, otherwise tabs
+
+
Scripts the entire database as a CreateOrReplace
@@ -532,6 +547,9 @@
CTOR - only called from static factory methods on the class
+
+
+
Removes all annotations from the model, that are used by Tabular Editor to serialize metadata in a way different from the TOM. For example,
@@ -1053,6 +1071,26 @@
Do not reference this member directly in your code. It supports the Analysis Services infrastructure.
+
+
+ Defines categories of metadata elements.
+ This enum is only supported when the compatibility level of the database is at 1703 or above.
+
+
+
+ Inherit the value from the system defined behavior.
+
+
+
+
+ Read-only users cannot access sensitive metadata in the model, such as measure definitions or other calculation expressions.
+
+
+
+
+ Allow read of metadata elements related to definitions of calculations.
+
+
Access control to a data defined by a metadata object.
@@ -1450,7 +1488,7 @@
- No filtering will occur from either end of the relationship.
+ Blocks RLS filter propagation from the One side to the Many side of a table relationship. This only applies to limited relationships in which at least one table is from a Power BI semantic model or Analysis Services database and the other table is from a different data source.
This value is only supported when the compatibility level of the database is at 1561 or above.
@@ -2032,11 +2070,6 @@
Also creates the underlying metadataobject and adds it to the TOM tree.
-
-
- Creates an exact copy of this CalculatedTableColumn object.
-
-
The parent Table of the current Calculated Table Column.
@@ -4225,6 +4258,11 @@
Determines Selection Expression behavior for Calculation Groups
This property is only supported when the compatibility level of the database is at 1609 or above.
+
+
+ The policy that applies to the users with read permissions only and controls their access to various metadata elements.
+ This property is only supported when the compatibility level of the database is at 1703 or above.
+
A reference to a default measure.
@@ -5530,7 +5568,7 @@
- Indicates how relationships influence filtering of data when evaluating row-level security expressions. Possible values are as follows. OneDirection (1): The rows selected in the 'To' end of the relationship will automatically filter scans of the table in the 'From' end of the relationship. BothDirections (2): Filters on either end of the relationship will automatically filter the other table.
+ Indicates how relationships influence filtering of data when evaluating row-level security expressions. See SecurityFilteringBehavior enumeration for possible values and their descriptions.
@@ -7271,6 +7309,13 @@
+
+
+ Finds the time unit association for the specified time unit. Returns null if no association exists for the specified time unit.
+
+
+
+
Removes the specified time unit association from the calendar.
@@ -7278,6 +7323,26 @@
+
+
+ Gets the list of objects that reference this calendar based on their DAX expressions.
+
+
+
+
+ Gets a string that may be used for referencing the calendar in a DAX expression.
+
+
+
+
+ Gets a string that may be used for referencing the caæemdar in a DAX expression.
+
+
+
+
+ Gets a string that may be used for referencing the calendar in a DAX expression.
+
+
Collection class for Calendar. Provides convenient properties for setting a property on multiple objects at once.
@@ -7304,6 +7369,13 @@
Sets the SourceLineageTag property of all objects in the collection at once.
+
+
+ This property points to the CalendarCollection itself. It is used only to display a clickable
+ "Calendar" property in the Property Grid, which will open the CalendarCollectionEditor when
+ clicked.
+
+
The Expression of this Calculated Table.
@@ -7496,6 +7568,9 @@
Gets or sets the Name of the underlying referenced object used to query and populate current partition.
+
+
+
Represents a Folder in the TreeView. Does not correspond to any object in the TOM.
@@ -7514,9 +7589,9 @@
Display Folders are not represented as individual objects in TOM. Instead, an object that can be shown in a Display Folder,
has a DisplayFolder (string) property. However, due to the way most TreeView-style UI components work, it is beneficial
- to construct a cache of display folder objects for each table. Each folder object has a list of child objects. The cache
- needs to be reconstructured when objects are moved around, or when the display culture is changed (as display folders are
- translatable).
+ to construct a cache of display folder objects for each object container (tables). Each folder object has a list of child
+ objects. The cache needs to be reconstructured when objects are moved around, or when the display culture is changed (as
+ display folders are translatable).
@@ -7699,7 +7774,7 @@
- Objects that can be referenced in a DAX expression (table, column, measure)
+ Objects that can be referenced in a DAX expression (table, column, measure, calendar)
@@ -8361,6 +8436,13 @@
The type of this object (Folder, Measure, Table, etc.).
+
+
+ Gives implementations a chance to resolve missing references after deserializing from JSON, but before adding the object to the collection.
+
+
+
+
Fired after a property is changed
@@ -8664,6 +8746,11 @@
Looks up a localized string similar to Structured Data Sources can only be added to Compatibility Level 1400 or higher models..
+
+
+ Looks up a localized string similar to Server does not support compatibility level {0}. Save the model as a .bim file if you need to set the compatibility level to a value that is not supported by this server..
+
+
Looks up a localized string similar to Culture for '{0}' is specified more than once..
@@ -8794,6 +8881,16 @@
Looks up a localized string similar to User-Defined Functions cannot contain the character '{0}' in their name..
+
+
+ Looks up a localized string similar to '{0}' is a reserved word and cannot be used as the name of a User-Defined Function..
+
+
+
+
+ Looks up a localized string similar to '{0}' is a reserved word and cannot be used as part of the name of a User-Defined Function..
+
+
Looks up a localized string similar to Unable to perform insert.
@@ -9150,7 +9247,12 @@
- When the name of a measure is changed, DAX formulas referencing the measure has to be updated.
+ When the name of a UDF is changed, DAX formulas referencing the UDF has to be updated.
+
+
+
+
+ When the name of a calendar is changed, DAX formulas referencing the calendar has to be updated.
@@ -9170,6 +9272,11 @@
When the expression of a measure is changed, the resulting data type of the measure might change, potentially causing cascasdes.
+
+
+ When the column mappings of a calendar is changed, it may become incompatible/compatible with certain time-intel DAX functions, potentially causing cascades.
+
+
When the expression of a KPI is changed, the resulting data type of the KPI might change, potentially causing cascasdes.
diff --git a/content/_apiSource/TabularEditor3.Shared.dll b/content/_apiSource/TabularEditor3.Shared.dll
index 9e5284f..1ecfc60 100644
Binary files a/content/_apiSource/TabularEditor3.Shared.dll and b/content/_apiSource/TabularEditor3.Shared.dll differ
diff --git a/content/_apiSource/TabularEditor3.Shared.xml b/content/_apiSource/TabularEditor3.Shared.xml
index 0af3acc..fb9164c 100644
--- a/content/_apiSource/TabularEditor3.Shared.xml
+++ b/content/_apiSource/TabularEditor3.Shared.xml
@@ -570,6 +570,16 @@
The currently selected column (if exactly one column is selected in the explorer tree).
+
+
+ The currently selected calendars.
+
+
+
+
+ The currently selected calendar (if exactly one calendar is selected in the explorer tree).
+
+
The currently selected object (if exactly one object is selected in the explorer tree).
@@ -778,6 +788,21 @@
Looks up a localized string similar to Username and password.
+
+
+ Looks up a localized string similar to {0} B.
+
+
+
+
+ Looks up a localized string similar to {0} Bytes.
+
+
+
+
+ Looks up a localized string similar to Cannot perform processing on a disconnected model..
+
+
Looks up a localized string similar to Column values.
@@ -788,6 +813,21 @@
Looks up a localized string similar to Datamart.
+
+
+ Looks up a localized string similar to Data refresh complete..
+
+
+
+
+ Looks up a localized string similar to Data refresh failed..
+
+
+
+
+ Looks up a localized string similar to Data refresh started....
+
+
Looks up a localized string similar to DAX Optimizer account registration incomplete. Please visit <href="{0}">{1}</href> to finalize..
@@ -798,11 +838,21 @@
Looks up a localized string similar to File upload to the DAX Optimizer service is disabled by a local policy..
+
+
+ Looks up a localized string similar to Disabled due to low model compatibility level ({0} < {1}).
+
+
Looks up a localized string similar to Semantic Model (Default).
+
+
+ Looks up a localized string similar to Error.
+
+
Looks up a localized string similar to An error occurred while trying to deserialize the User Options (.tmuo) file:
@@ -820,6 +870,11 @@
Looks up a localized string similar to External browser.
+
+
+ Looks up a localized string similar to {0} GB.
+
+
Looks up a localized string similar to Always.
@@ -850,16 +905,41 @@
Looks up a localized string similar to Sorting and filtering is reset when the query is modified, ignoring whitespace/comment modifications..
+
+
+ Looks up a localized string similar to {0} KB.
+
+
Looks up a localized string similar to Lakehouse.
+
+
+ Looks up a localized string similar to {0} MB.
+
+
+
+
+ Looks up a localized string similar to {0} M.
+
+
+
+
+ Looks up a localized string similar to Mirrored Azure Databricks catalog.
+
+
Looks up a localized string similar to Mirrored Database.
+
+
+ Looks up a localized string similar to {0} model refresh.
+
+
Looks up a localized string similar to My Workspace.
@@ -875,6 +955,11 @@
Looks up a localized string similar to OAuth.
+
+
+ Looks up a localized string similar to {0} refresh of {1:partition {2}|{} partitions}.
+
+
Looks up a localized string similar to Custom.
@@ -890,6 +975,21 @@
Looks up a localized string similar to System.
+
+
+ Looks up a localized string similar to (Relationships).
+
+
+
+
+ Looks up a localized string similar to Save changes before processing?.
+
+
+
+
+ Looks up a localized string similar to You have made changes to the model metadata which has not yet been saved. Do you want to save these changes before starting the refresh job?.
+
+
Looks up a localized string similar to Scalar expression.
@@ -915,26 +1015,66 @@
Looks up a localized string similar to SQL Database.
+
+
+ Looks up a localized string similar to Start processing when metadata are out-of-sync?.
+
+
+
+
+ Looks up a localized string similar to You have made changes to the model metadata which has not yet been saved, and a refresh job is currently in progress. Would you like to queue a new refresh job anyway?.
+
+
Looks up a localized string similar to Table expression.
+
+
+ Looks up a localized string similar to {0} refresh of {1:table {2}|{} tables}.
+
+
+
+
+ Looks up a localized string similar to {0} K.
+
+
Looks up a localized string similar to Unable to find a warehouse, lakehouse, SQL database, or Mirrored Database with the specified workspaceId {0} and objectId {1}.
+
+
+ Looks up a localized string similar to Unable to process partition '{0}'. The partition is not available on the deployed database..
+
+
+
+
+ Looks up a localized string similar to Unable to process table '{0}'. The table is not available on the deployed database..
+
+
Looks up a localized string similar to (Unknown).
+
+
+ Looks up a localized string similar to View refresh queue.
+
+
Looks up a localized string similar to Warehouse.
+
+
+ Looks up a localized string similar to Warning.
+
+
Contains various extension methods which are commonly used in scripts
@@ -1784,6 +1924,11 @@
When this feature switch is enabled, end users may enable the Git Integration Preview feature (through the preferences dialog)
+
+
+ When this feature switch is enabled, the DAX Optimizer integration feature will connect to DAX Optimizer's DEV environment.
+
+
Checks if the currently loaded model (if any) has unsaved chanages, and prompt the user if they want to save it.
diff --git a/content/assets/images/impersonation-customdata.png b/content/assets/images/impersonation-customdata.png
new file mode 100644
index 0000000..52956eb
Binary files /dev/null and b/content/assets/images/impersonation-customdata.png differ
diff --git a/content/assets/images/impersonation-dropdown.png b/content/assets/images/impersonation-dropdown.png
index 293b7fc..4c39c08 100644
Binary files a/content/assets/images/impersonation-dropdown.png and b/content/assets/images/impersonation-dropdown.png differ
diff --git a/content/assets/images/select-impersonation.png b/content/assets/images/select-impersonation.png
index 8a3331f..c7d064d 100644
Binary files a/content/assets/images/select-impersonation.png and b/content/assets/images/select-impersonation.png differ
diff --git a/content/onboarding/refresh-preview-query.md b/content/onboarding/refresh-preview-query.md
index c3bb5b4..b09b30f 100644
--- a/content/onboarding/refresh-preview-query.md
+++ b/content/onboarding/refresh-preview-query.md
@@ -135,6 +135,23 @@ Once the impersonation is enabled, the **Impersonation..** button is checked, an
When auto-refresh is enabled on a data view, changing the impersonation will immediately refresh the view.
+## CustomData
+
+The CustomData feature allows you to pass a custom string value that can be used in DAX expressions, typically for implementing dynamic row-level security scenarios. This feature can be combined with any of the impersonation options described above, including **No Impersonation**.
+
+
+
+When you enter a value in the **CustomData** input field, Tabular Editor 3 adds the [`CustomData` property](https://docs.microsoft.com/en-us/analysis-services/instances/connection-string-properties-analysis-services?view=asallproducts-allversions#customdata) to the connection string. This value can then be retrieved within your DAX expressions using the [`CUSTOMDATA()` function](https://dax.guide/customdata/).
+
+CustomData is commonly used in implementing dynamic row-level security when an application uses custom authentication. The value you provide can be leveraged in role filter expressions to control which rows users can see based on the custom data passed through the connection string.
+
+This feature is particularly useful in **Power BI Embedded** scenarios, where you can natively utilize CustomData to add row filters that pass free text (strings) to leverage dynamic row-level security in embedded reports, dashboards, and tiles.
+
+**Example use case:** You might pass a user's department or region as CustomData, and then use that value in a role's filter expression like:
+```dax
+'Department'[DepartmentCode] = CUSTOMDATA()
+```
+
# VertiPaq Analyzer
Tabular Editor 3 includes a version of the open-source [VertiPaq Analyzer](https://www.sqlbi.com/tools/vertipaq-analyzer/) tool, created by [SQLBI](https://sqlbi.com). VertiPaq Analyzer is useful to analyze VertiPaq storage structures for your Power BI or Tabular data model.