Skip to content

SQLBI Whiteboard 1.3.1 (dev 3317)

Pre-release
Pre-release

Choose a tag to compare

@marcosqlbi marcosqlbi released this 06 Sep 04:03
544350c
Add KQL as a text container language, highlighted and formatted (#103)

Closes #101.

Kusto Query Language joins DAX and SQL Server: a text container can be
KQL, the
title-bar chip offers it, F6 formats it, and `.kql` files and `kql` /
`kusto`
fences import as KQL.

## Why this shape

`SQLBI.Whiteboard.Kql` wraps `Microsoft.Azure.Kusto.Language` the way
`SQLBI.Whiteboard.SqlServer` wraps ScriptDOM. Microsoft ships the
parser, the
classifier, and the formatter for their own language, so unlike DAX
there is no
grammar to write here and nothing to keep current by hand as KQL grows.
The
package is Apache-2.0, has no dependencies of its own, and targets
netstandard2.0.

Only the syntax is judged. A board carries a snippet rather than a
connection,
so the semantic pass reports every table and column it cannot resolve;
all of
those would be false alarms on a whiteboard, so acceptance and the F6
guard both
read syntax diagnostics alone.

## The one place the library default was overridden

Formatting keeps the author's spacing around the assignment sign. The
library
default writes `join kind = inner hint.strategy = broadcast`, which
rewrites the
hints that real queries carry; the examples on the issue are all written
the
tight way. Everything else is the library's own layout.

As with DAX and SQL, formatting compares the tokens and the comments
before and
after and returns the text untouched when they differ, so F6 can never
quietly
change a query.

## Notes for review

- The language is appended last everywhere, so a board or a settings
file saved
before this release keeps its Snippet format order and simply gains KQL
at the
  end. There is a test for that.
- A bare word is a valid KQL query, so KQL would claim `Agenda` if it
were tried
before Plain text. Plain text stays first by default and always accepts,
so
  this only reaches someone who has reordered the list deliberately.
- `SQLBI.Whiteboard.Kql.dll` is in the pipeline signing list. The
installer
harvests the publish folder, so it and `Kusto.Language.dll` need nothing
there.
- Verified in the running application, not only in tests: both
containers of a
`.wimport` imported as KQL, highlighted, and F6 reformatted a one-line
query
  in place while keeping `T=7d` and `kind=inner` as written.

`dotnet build Whiteboard.sln -c Release` is clean with no warnings, and
the
smoke tests pass.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>