• azurecoder

Kusto Lightning Fact 3: .create function

In the previous lightning fact we looked at using variables through the let command. In this tutorial we'll look at using functions which give us a a bunch of reusability.

.create function ifnotexists 
with (docstring = 'A simple function to get aggregates of countries', folder='CountryFunctions')
AllCountrySummaryState()  {
sales 
| project Country, Profit = Total_Profit / 1000000, Earnings = Total_Revenue / 1000000, Year = getyear(Order_Date)
| summarize Earnings = round(sum(Earnings)), Profit = round(sum(Profit)), TransactionCountPerYear = count() by Country, Year
| order by Country, Year asc
| extend EarningsRatio = round((Profit / Earnings) * 100, 2)
}

This will create a function if it doesn't already exist with a description and putting it into a folder called CountryFunctions.


There's a few interesting caveats in this function. We get profit, earnings per country per year + the number of transactions in each year. From this we can create an earnings ratio to see how much variance there has been over the years in earnings per country.


You can also use .drop function to drop the function as you would expect.


A feature here is also the keyword extend which allows you to add to the project query without projecting out everything else again.

31 views0 comments

Recent Posts

See All

Just one more column, what could go wrong?

Sometimes, when you go scanning through the documentation for Spark, you come across notes about certain functions. These tend to offer little hints and tips about using the function, or to give warni

Why leave bad data to chance?

Something that we often see as Spark jobs are moved into production is that handling of bad data is either ignored, or a lot of effort goes into validating the data and, specifically for this post, th