Skip to content

Add quote-to-bracket escaping for calculated measures with multiple ad-hoc measures#1

Open
AlisonNeedsCopilot wants to merge 2 commits into
Users/AlisonNeedsCopilot/move-extend-after-summarize-calculated-measuresfrom
Users/AlisonNeedsCopilot/quote-escape-bracket-multiple-ad-hoc-measures-calculated-measures
Open

Add quote-to-bracket escaping for calculated measures with multiple ad-hoc measures#1
AlisonNeedsCopilot wants to merge 2 commits into
Users/AlisonNeedsCopilot/move-extend-after-summarize-calculated-measuresfrom
Users/AlisonNeedsCopilot/quote-escape-bracket-multiple-ad-hoc-measures-calculated-measures

Conversation

@AlisonNeedsCopilot

Copy link
Copy Markdown
Owner

##Summary
This PR enhances the KQL dialect to properly handle calculated measures that contain multiple quoted column references combined with arithmetic operators or constants.

##Problem
Previously, expressions like "Measure 1" + "Measure 2" or "Measure 1" * 2 were not properly escaped. The quote-stripping logic would incorrectly process these expressions, breaking the KQL output. Also, measures containing operators in their names were incorrectly parsed

##Technical Details

  • _find_operator_outside_quotes() added to find operators not part of the measure name
  • Call _escape_and_quote_columns() recursively on the left and right side of the operator. This ensures all parts of the expression get bracketed and quoted. Exclude numbers from getting quoted
  • Update _is_number_literal() to include decimals that start and end with a number

##UI Changes
Before:
image
After:
image

Alison Gim added 2 commits February 6, 2026 00:50
…d hoc measures

- Add _find_operator_outside_quotes() helper to find operators not inside quoted strings
- Update _escape_and_quote_columns() to recursively escape both sides of operators
- Update _is_number_literal() to match integers and decimals with digits on both sides
- Add tests for:
  - Two quoted measures: "Measure 1" + "Measure 2" -> ["Measure 1"] + ["Measure 2"]
  - Measure with constant: "Measure 1" * 2 -> ["Measure 1"] * 2
  - Measure with operator in name: "Measure 1-2" -> ["Measure 1-2"]
  - _is_number_literal function validation
@AlisonNeedsCopilot AlisonNeedsCopilot force-pushed the Users/AlisonNeedsCopilot/quote-escape-bracket-multiple-ad-hoc-measures-calculated-measures branch from a41cf41 to fdd3851 Compare February 6, 2026 01:37
@AlisonNeedsCopilot AlisonNeedsCopilot force-pushed the Users/AlisonNeedsCopilot/move-extend-after-summarize-calculated-measures branch from e53f4e9 to 63599f0 Compare March 13, 2026 23:38
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.

1 participant