Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improvements to rule expressions #238

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

otykier
Copy link

@otykier otykier commented Nov 1, 2023

Various improvements to existing rules:

  • Use Tokenize().Any(...) instead of RegEx.IsMatch(...), when determining if a DAX expression contains certain tokens, such as specific DAX functions or the / (division) operator. Tokenization ignores whitespace/comments in the DAX expression, which improves the accuracy of the rules.
  • When RegEx is used, and the RegEx pattern is constructed from one or more object names, make sure to escape the name using RegEx.Escape. Otherwise, the rule would error out when an object name contains characters that has special meaning in RegEx syntax.
  • RLS-specific rules should use the "TablePermission" scope to simplify the rule expression, and to better guide the user to the object that hosts the DAX filter expression.

The Tokenize() syntax works with all current versions of Tabular Editor 2. We identified a bug in TE3 that prevented the use of Tokenize() in BPA rules, affecting versions 3.6.0 through 3.11.0, but this bug will be fixed with the release of 3.12.0, later this month.

CC @m-kovalsky

…he presence of certain DAX tokens (functions, division symbol, etc.).
…ters. Also, fixed RegEx expression to be less strict when detecting if the current table is being referenced within USERELATIONSHIP.
…id errors when an object name contains special characters
@otykier otykier changed the title User/danielotykier/rule improvements Improvements to rule expressions Nov 1, 2023
@otykier
Copy link
Author

otykier commented Nov 1, 2023

@microsoft-github-policy-service agree company="Tabular Editor ApS"

Copy link
Contributor

@otykier the command you issued was incorrect. Please try again.

Examples are:

@microsoft-github-policy-service agree

and

@microsoft-github-policy-service agree company="your company"

@m-kovalsky
Copy link
Collaborator

Thanks so much Daniel! We even have best practices for the best practices :) Is the Tokenize function documented (or will it be)? Certainly makes the code much simpler. I will wait to commit these changes until you release TE 3.12.0 so folks using TE3 will not be as interrupted.

@otykier
Copy link
Author

otykier commented Nov 1, 2023

Is the Tokenize function documented (or will it be)? Certainly makes the code much simpler.

Yes (although it deserves its own article as you can do a lot of cool stuff once you have the list of tokens).

I will wait to commit these changes until you release TE 3.12.0 so folks using TE3 will not be as interrupted.

Awesome!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants