HomeDev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunityDoc feedbackLog In
GitHubNuGetDev CommunityDoc feedback


Kusto Query Language (KQL) is a language to query structured, semi-structured, and unstructured data. See [Microsoft Documentation](🔗) for a tutorial and reference.

## Use KQL

In Optimizely Profile Store, KQL is used to query and analyze [Track events](🔗) data. See [Track events](🔗) and [Filter Definition](🔗) to understand the basics of KQL in both querying track events and working with filter definition, and some examples of KQL in Event Filter definition.

## Limitations

  • KQL is used for read-only requests to process data and return results. Create, update, or delete operations are not supported.

  • When running KQL, there is a query timeout setting, so a query that is too complicated can return a bad request.

  • Profile API limits query based on resource usage.

  • When using preview endpoint to test KQL Query in an Event filter definition, the result is limited to 1000 results.

## Best Practices

  • Follow [Query best practice](🔗) from Microsoft.

  • Limit the usage of queries that performs a table scan. For example, Events | sample 1  scans the whole table and retrieves one random record; thus, the query will run very slowly. For this case, use Events | take 1, which also returns one random record but without scanning the whole table, so the performance is significantly improved.

  • Simplify the query as much as possible. For example:

    Instead of:

    

    The following code returns the same result but is more concise:

    
  • Query on the latest data, if possible. Querying older data would take a much longer time.