TechBrothersIT is the blog spot and a video (Youtube) Channel to learn and share Information, scenarios, real time examples about SQL Server, Transact-SQL (TSQL), SQL Server Database Administration (SQL DBA), Business Intelligence (BI), SQL Server Integration Services (SSIS), SQL Server Reporting Services (SSRS), Data Warehouse (DWH) Concepts, Microsoft Dynamics AX, Microsoft Dynamics Lifecycle Services and all other different Microsoft Technologies.
Label
- Azure Data Factory Interview Question & Answers
- Azure Data Factory Tutorial Step by Step
- C# Scripts
- DWH INTERVIEW QUESTIONS
- Google Cloud SQL Tutorial
- Kusto Query Language (KQL) Tutorial
- MS Dynamics AX 2012 R2 Video Tutorial
- MariaDB Admin & Dev Tutorial
- MySQL / MariaDB Developer Tutorial Beginner to Advance
- MySQL DBA Tutorial Beginner to Advance
- SQL SERVER DBA INTERVIEW QUESTIONS
- SQL SERVER DBA Video Tutorial
- SQL Server / TSQL Tutorial
- SQL Server 2016
- SQL Server High Availability on Azure Tutorial
- SQL Server Scripts
- SQL Server on Linux Tutorial
- SSIS INTERVIEW QUESTIONS
- SSIS Video Tutorial
- SSRS INTERVIEW QUESTIONS
- SSRS Video Tutorial
- TSQL INTERVIEW QUESTIONS
- Team Foundation Server 2013 Video Tutorial
- Team Foundation Server 2015 Video Tutorial
- Windows 10
- Windows Server 2012 R2 Installation Videos
How to use Append Variable activity in Azure Data Factory - Azure Data Factory Tutorial 2022
How to use Union Operator in Kusto Query Language | Kusto Query Language
Topic: How to use Union Operator in Kusto Query Language
create tables
.create table TotalSaleEurope (
id: int
,SalePersonFName: string
,SalePersonLName : string
,ProductName : string
,ItemsSold : int
,SoldPrice :real
,SoldDate: date
,Region : string
)
//Insert data
.ingest inline into table TotalSaleEurope <|
12,Aamir,Nawaz,Cell Phone,2,1200,2015-03-03,Europe
9,Petra,Henry,TV,10,5000,2015-04-08,Europe
10,Rita,Roger,Laptop,7,2100,2015-04-11,Europe
10,Rita,Roger,Laptop,7,2100,2015-04-11,Europe
// Using Search operator
.create table TotalSaleAsia (
id: int
,SalePersonFName: string
,SalePersonLName : string
,ProductName : string
,ItemsSold : int
,SoldPrice :real
,SoldDate: date
,City : string
,State : string
,Country : string
,Region : string
)
//Insert data
.ingest inline into table TotalSaleAsia <|
11,Tamara,Tony,Cell Phone,2,1200,2015-03-03,Frankfurt,Hesse,Germany,Europe
9,Petra,Henry,TV,10,5000,2015-04-08,Paris,Île-de-France,France,Europe
3,Christy,Ladson,TV,3,1600,2015-04-02,High Point,NC,USA,North America
7,Chirag,Patel,Cell Phone,5,1500,2015-06-23,AhmadAbad,Gujrat,India,Asia
2,M,Raza,Cell Phone,2,800,2015-07-15,Charlotte,NC,USA,North America
5,Najaf,Ali,Computer,1,300,2015-06-20,Karachi,Sindh,Pakistan,Asia
6,Sukhjeet,Singh,TV,2,900,2015-06-21,ChandiGar,Punjab,India,Asia
4,John,Rivers,Laptop,5,2400,2014-03-09,Jersey City,NJ,USA,North America
8,Aleena,Aman,Laptop,2,800,2015-05-25,Lahore,Punjab,Pakistan,Asia
10,Rita,Roger,Laptop,7,2100,2015-04-11,Paris,Île-de-France,France,Europe
1,Aamir,Shahzad,TV,1,700,2015-07-15,Charlotte,NC,USA,North America
12,aamir,Shahzad,TV,1,7000,2015-07-15,Charlotte,NC,USA,North America
10,Rita,Roger,Laptop,7,2100,2015-04-11,Paris,Île-de-France,France,Europe
14,aamir,Shahzad,TV,1,7000,2015-07-15,Charlotte,NC,USA,South America
17,Chirag,Patel,Charger Cell Phone,5,1500,2015-06-23,AhmadAbad,Gujrat,India,Asia
// Using Search operator
.create table TotalSaleAsia (
id: int
,SalePersonFName: string
,SalePersonLName : string
,ProductName : string
,ItemsSold : int
,SoldPrice :real
,SoldDate: date
,City : string
,State : string
,Country : string
,Region : string
)
//Insert data
.ingest inline into table TotalSaleAsia <|
7,Chirag,Patel,Cell Phone,5,1500,2015-06-23,AhmadAbad,Gujrat,India,Asia
5,Najaf,Ali,Computer,1,300,2015-06-20,Karachi,Sindh,Pakistan,Asia
6,Sukhjeet,Singh,TV,2,900,2015-06-21,ChandiGar,Punjab,India,Asia
8,Aleena,Aman,Laptop,2,800,2015-05-25,Lahore,Punjab,Pakistan,Asia
17,Chirag,Patel,Charger Cell Phone,5,1500,2015-06-23,AhmadAbad,Gujrat,India,Asia
// Using Search operator
.create table TotalSaleEurope (
id: int
,SalePersonFName: string
,SalePersonLName : string
,ProductName : string
,ItemsSold : int
,SoldPrice :real
,SoldDate: date
,City : string
,State : string
,Country : string
,Region : string
)
//Insert data
.ingest inline into table TotalSaleEurope <|
11,Tamara,Tony,Cell Phone,2,1200,2015-03-03,Frankfurt,Hesse,Germany,Europe
9,Petra,Henry,TV,10,5000,2015-04-08,Paris,Île-de-France,France,Europe
10,Rita,Roger,Laptop,7,2100,2015-04-11,Paris,Île-de-France,France,Europe
10,Rita,Roger,Laptop,7,2100,2015-04-11,Paris,Île-de-France,France,Europe
// UNION OPERATOR
//Takes two or more tables and returns the rows of all of them.
//Union Multiple tables
// Table1 | union Table2,Table3,Table4...
TotalSaleEurope
TotalSale
| union TotalSaleAsia
//Using kind=outer -- > outer - (default). The result has all the columns that occur in any of the inputs. Cells that weren't defined by an input row are set to null.
union kind=outer withsource="TableName"
TotalSaleAsia,TotalSaleEurope,TotalSale
//Using kind=inner --inner - The result has the subset of columns that are common to all of the input tables.
union kind=inner withsource="TableName"
TotalSaleAsia,TotalSaleEurope,TotalSale
//Union Tables with Different Listof Columns
TotalSale
| union TotalSaleAsia,Customer
//Union Different Result Sets
TotalSale
| where Region=="Asia"
| union TotalSaleAsia
| union TotalSaleEurope
//Union Multiple Tables with specified string value
union TotalSale* | where * has "aamir"
//Add Table Name in output
union withsource="SourceTable" TotalSale* | where * has "aamir"
//Add a Source Table Name to output query
TotalSale
| union withsource="SourceTable" TotalSaleAsia,TotalSaleEurope
//Union Multiple Result Sets
union withsource="SourceTable"
(TotalSale | project SalePersonFName,SalePersonLName,Region) ,
(TotalSaleAsia | project SalePersonFName,SalePersonLName,SoldPrice),
(TotalSaleEurope | project SalePersonFName,SalePersonLName)
// Apply further Filter to your Union results
union withsource="SourceTable"
(TotalSale | project SalePersonFName,SalePersonLName) ,
(TotalSaleAsia | project SalePersonFName,SalePersonLName),
(TotalSaleEurope | project SalePersonFName,SalePersonLName) //| where SalePersonFName =="aamir"
| count
//Get the Table Name instead of union_age0,Union_arg1...
let TotalSaleDrv=view() {TotalSale | project SalePersonFName,SalePersonLName}; // Add a Column that does not include will produce results for only that dataset.
let AsiaTotalSaleDrv=view() {TotalSaleAsia | project SalePersonFName,SalePersonLName,Region};
let EuropTotalSaleDrv =view() {TotalSaleEurope | project SalePersonFName,SalePersonLName,Region};
union withsource=TableName TotalSaleDrv,AsiaTotalSaleDrv,EuropTotalSaleDrv
IsNull and IsEmpty Functions in Kusto Query Language | Kusto Query Functions | KQL Tutorial 2022
Topic: IsNull and IsEmpty Functions in Kusto Query Language
//isempty and isnull
//isempty can be used to find out if string data column value is empty. is null can be used for integer type columns
//Let's create a table Customer
//.drop table Customer
.create table Customer (CustomerId: long, FName: string,LName:string )
.ingest inline into table Customer <|
1,Aamir,Shahzad
2,Raza,ALI
3,Lisa,
4,steve,Ladson
5,Robert,Jr
,aamir,ali
// get all records so you can see empty rows
Customer
// get all records where integer type column has null values
Customer
| where isnull( CustomerId)
//get all records where string type columns are empty
Customer
| where isnull(LName) // this does not work on string type columns
Customer
| where isempty( LName)
Video Demo: IsNull and IsEmpty Functions in Kusto Query Language
Cross Cluster and Cross Database Queries | Join Data Across Different Databases in Kusto Query (KQL)
Topic: Cross Cluster and Cross Database Queries
in this video we are going to learn how to perform cross database and across cluster queries in Kusto so that's very easy actually and if you have come with the background with sql server or oracle and other databases you have used across databases queries often and often if you want to do cross data servers whether you do link server in a sql server and all that here you will not be creating link server you will be just pointing onto this cluster and you will be able to do. Kusto Query Language is a powerful tool to explore your data and discover patterns, identify anomalies and outliers, create statistical modeling, and more. The query uses schema entities that are organized in a hierarchy similar to SQL's: databases, tables, and columns.
// cross database and cross cluster queries
//create Table and Insert Sample Data in Azure Data Explorer DB for Testing
.create table TotalSale (
id: int
,SalePersonFName: string
,SalePersonLName : string
,ProductName : string
,ItemsSold : int
,SoldPrice :real
,SoldDate: date
,City : string
,State : string
,Country : string
,Region : string
)
//Insert data
.ingest inline into table TotalSale <|
11,Tamara,Tony,Cell Phone,2,1200,2015-03-03,Frankfurt,Hesse,Germany,Europe
9,Petra,Henry,TV,10,5000,2015-04-08,Paris,Île-de-France,France,Europe
3,Christy,Ladson,TV,3,1600,2015-04-02,High Point,NC,USA,North America
7,Chirag,Patel,Cell Phone,5,1500,2015-06-23,AhmadAbad,Gujrat,India,Asia
2,M,Raza,Cell Phone,2,800,2015-07-15,Charlotte,NC,USA,North America
5,Najaf,Ali,Computer,1,300,2015-06-20,Karachi,Sindh,Pakistan,Asia
6,Sukhjeet,Singh,TV,2,900,2015-06-21,ChandiGar,Punjab,India,Asia
4,John,Rivers,Laptop,5,2400,2014-03-09,Jersey City,NJ,USA,North America
8,Aleena,Aman,Laptop,2,800,2015-05-25,Lahore,Punjab,Pakistan,Asia
10,Rita,Roger,Laptop,7,2100,2015-04-11,Paris,Île-de-France,France,Europe
1,Aamir,Shahzad,TV,1,700,2015-07-15,Charlotte,NC,USA,North America
12,aamir,Shahzad,TV,1,7000,2015-07-15,Charlotte,NC,USA,North America
10,Rita,Roger,Laptop,7,2100,2015-04-11,Paris,Île-de-France,France,Europe
// cross database queries
database("tbdb").TotalSale
TotalSaleAsia
| join database("tbdb").TotalSale on id
//Cross cluster queries
TotalSaleAsia
| join (cluster('techbrotheradx').database("tbdb").TotalSale) on id
Video Demo: Cross Cluster and Cross Database Queries
Summarize Aggregate Functions in Kusto Query Language | Kusto Query Language (KQL)
Topic: Summarize Aggregate Functions in Kusto Query Language | Kusto Query Language (KQL)
In this video we are going to learn about summarize so summarize produce a table that aggregates the contents of input table with summarize we will be using a lot of functions such as count some and different other ones. Kusto Query Language is a powerful tool to explore your data and discover patterns, identify anomalies and outliers, create statistical modeling, and more. The query uses schema entities that are organized in a hierarchy similar to SQL's: databases, tables, and columns.
//summarize -- Produces a table that aggregates the content of the input table.
//
//Let's create a table Customer
//.drop table Customer
.create table Customer (CustomerId: long, FName: string,LName:string, Salary:int,hiredate:datetime)
.ingest inline into table Customer <|
1,Aamir,Shahzad,2000,2021-11-28T04:52:43.8745893Z
2,Raza,ALI,4000,2018-11-28T04:52:43.8745893Z
3,Lisa,Rivers,50000,2021-12-28T04:52:43.8745893Z
4,steve,Ladson,1000,2010-09-28T04:52:43.8745893Z
5,Robert,Jr,500,2015-01-20T04:52:43.8745893Z
6,aamir,ali,1000,2005-03-01T04:52:43.8745893Z
// Get Count of all records ( Count of CustomerId)
Customer
| summarize TotalRows=count(CustomerId)
// get Sum of all salaries
Customer
| summarize TotalSalaryamount=sum(Salary)
// Get Count of All rows and Sum of Salary
Customer
| summarize CountofEmployees=count(),Totalsalary=sum(Salary)
// Get Count by Region
TotalSale
| summarize SalePersonCnt=count() by Region
// Group by Multiple Columns
TotalSale
| summarize CountofItems=count() ,sum(ItemsSold) by Region,Country
//using arg_max() -- > Finds a row in the group that maximizes ExprToMaximize, and returns the value of ExprToReturn (or * to return the entire row).
// Let's say if you want to find out in each of the region , which country has sold the most(max) Items.
TotalSale
| summarize arg_max(ItemsSold, Country) by Region
//using arg_min() -- >Finds a row in the group that minimizes ExprToMinimize, and returns the value of ExprToReturn (or * to return the entire row).
// Let's say if you want to find out in each of the region , which country has sold the least(minimum) Items.
TotalSale
| summarize arg_min(ItemsSold, Country) by Region
// using avg() - Calculates the average (arithmetic mean) of Expr across the group.
// Find out Avg sold price for each of product
TotalSale
| summarize avg(SoldPrice) by ProductName
//using max
TotalSale
| summarize max(SoldPrice)
// using min
TotalSale
| summarize min(SoldPrice)
// get min sold price by Region
TotalSale
| summarize min(SoldPrice) by Region
// using sum -- Getting Sole price of all items
TotalSale
| summarize sum(SoldPrice)
// get sold price by Product
TotalSale
| summarize sum(SoldPrice) by ProductName
// take_any -- Arbitrarily chooses one record for each group in a summarize operator,
// and returns the value of one or more expressions over each such record.
TotalSale
| summarize take_any(ItemsSold) by Region,Country
// make_set --> Returns a dynamic (JSON) array of the set of distinct values that Expr takes in the group.
TotalSale
| summarize make_set(Region)
//dcount - Returns an estimate for the number of distinct values that are taken by a scalar expression in the summary group.
TotalSale
| summarize count(City), dcount(City)
//make_list() -- Returns a dynamic (JSON) array of all the values of Expr in the group.
TotalSale
| summarize make_list(Region)
TotalSale
| distinct Region
| summarize make_list(Region)
// helpful link
https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/hll-aggfunction
Video Demo: Summarize Aggregate Functions in Kusto Query Language
How to Format Date and Time in Kusto Query | DateTime Format Function in Kusto
Topic: How to Format Date and Time in Kusto Query Language
In this article, we are going to learn about to format_date time functions so often we need to format the date and time according to our requirement maybe we want to create a report and export to excel and all that and we would like to export that date time specific format. Kusto Query Language is a powerful tool to explore your data and discover patterns, identify anomalies and outliers, create statistical modeling, and more. The query uses schema entities that are organized in a hierarchy similar to SQL's: databases, tables, and columns.
//format_datetime() -- Formats a datetime according to the provided format.
// This has alot of formats, check this out
//https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/format-datetimefunction
//Let's create a table Customer
//.drop table Customer
.create table Customer (CustomerId: long, FName: string,LName:string, Salary: int,hiredate:datetime)
.ingest inline into table Customer <|
1,Aamir,Shahzad,2000,2021-11-28T04:52:43.8745893Z
2,Raza,ALI,4000,2018-11-28T04:52:43.8745893Z
3,Lisa,Rivers,50000,2021-12-28T04:52:43.8745893Z
4,steve,Ladson,1000,2010-09-28T04:52:43.8745893Z
5,Robert,Jr,500,2015-01-20T04:52:43.8745893Z
6,aamir,ali,1000,2005-03-01T04:52:43.8745893Z
Customer
| extend
SampleFormat1=format_datetime(hiredate,'y-M-d')
,SampleFormat2=format_datetime(hiredate,'yy-MM-dd')
,SampleFormat3=format_datetime(hiredate,'yyyy:MM:dd')
,SampleFormatTime=format_datetime(hiredate,'h:m:s')