Azure Data Explorer 指南

Azure在2018年推出了Data Explorer产品,提供实时海量流数据的分析服务(非流计算),面向应用、网站、移动端等设备。

用户可以查询,并交互式地对结果进行分析,以达到提升产品、增强用户体验、监控设备、用户增长等目的。其中提供一些机器学习函数,能够进行异常、模式识别、并且发现数据中的趋势。

该服务面向秒-分钟级拿到结果的场景,类OLAP,对TP场景不敏感。

产品起源

Azure Data Explorer(ADE)内部代号叫Kusto,在Kusto之前,Azure对监控和分析场景散落在各产品中,例如:Log Analytics、Application Insight,Azure Monitor,Time Series Insight,这些产品在用不同的技术架构来解决不同数据源等问题,例如:

  • 通过PerfCounter和Event通过流数据进行聚合告警

  • 利用通用计数器写入时序数据库,配置实时Dashboard

  • 把应用数据写到数仓做深入分析

ADE的目标是对上层预定义计算、后计算做一层抽象:将原始数据进行通用存储,保留一段时间(例如几个月),对这些多样化数据进行快速的多维分析。

ADE在微软的内部代号为Kusto,由以色列研发团队提供。Azure Log Analytics开始选型是Elastic Search,每年付1M$用来获得支持,但效果不好,因此在2015年时对日志、Metric场景使用Kusto来提供,包括之前在cosmosDB中的分析工作。

截止 September 2018 的数据:

  • hundreds of teams within Microsoft

  • 41 Azure regions as 2800 Engine+DM cluster pairs

  • about 23000 VMs.

  • overall data size stored in Kusto and available for query is 210 petabytes

  • 6 petabytes ingested daily.

  • around 10 billion queries per month.

可以推测平均存储时间为:210 (PB) / 6 (PB) = 35 天

产品定义

面向数据类型是Immutable Data,特点是AppendOnly,并且大部分都是Semi-Structure Data,例如User Click Log,Access Log等。Big Data理论中90%都是这类数据,这也是Big Data理论数字化并洞察物理时间的基础。

从Facebook等数据来看,2017年时每天用户产生的视频(UGC)大约在10PB,但用户点击产生的日志量已经远远超过10PB这量,对视频网站而言,内容数据增量少于点击日志的增量已成为通用的规律。

Azure在宣传时这样定义自己的产品:

fast, fully managed data analytics service for real-time analysis on large volumes of data streaming from applications, websites, IoT devices, and more.

产品主要解决三类问题:

  • Customer Query (Advance Hunting)

  • Interactive UI (前者封装)

  • Background Automation(定时任务)

也有一些解释基于几个交互式产品来解释:底层是实时OLAP,上层是Jupiter(交互式) + Kibana(可视化)

从产品定位角度考虑,ADE处于中间层次(利用人的交互式分析能力进行发掘与探索):

  • integrates with other major services to provide an end-to-end solution

  • pivotal role in the data warehousing flow by executing the EXPLORE step of the flow on terabytes of diverse raw data

除此之外ADE(Kusto)是

  • azure application insight, log analytics 基础

  • 为Azure Monitor, Azure Time Series Insights, and Windows Defender Advanced Threat Protection提供数据服务

  • 提供REST API, MS-TDS, and Azure Resource Manager service endpoints and several client libraries

数据模型与API

ADE以实例方式给用户付费,用户购买一组实例后可以创建:

  • Database

  • Table:存储实例,包含Schema(表结构和字段类型),Mapping(如何从CSV、Avro等格式映射)

  • Functions:自定义函数,利用scalar语言可以定义自定义方法,方便后期处理

整个API只有一组接口,通过类KQL方法来管理控制流与数据流,控制流以”.”作为开头,例如 “.create table”。数据分析语言除了KQL外还支持SQL:

  • TSQL: https://docs.microsoft.com/en-us/azure/kusto/api/tds/t-sql

  • KQL: https://docs.microsoft.com/en-us/azure/kusto/query/index

以下是一些案例:

创建:
.create table MyLogs ( Level:string, Timestamp:datetime, UserId:string, TraceId:string, Message:string, ProcessId:int32 )
​
创建或追加:
.create-merge tables MyLogs (Level:string, Timestamp:datetime, UserId:string, TraceId:string, Message:string, ProcessId:int32), MyUsers (UserId:string, Name:string)
​
.alter column ['Table'].['ColumnX'] type=string
更改列行为后,之前数据会变成Null,建议把数据筛选出来写入新的Table
​
映射关系:
.create table MyTable ingestion csv mapping "Mapping1" '[{ "Name" : "rownumber", "DataType":"int", "Ordinal" : 0},{ "Name" : "rowguid", "DataType":"string", "Ordinal" : 1 }]’
.create table MyTable ingestion json mapping "Mapping1" '[{ "column" : "rownumber", "datatype" : "int", "path" : "$.rownumber"},{ "column" : "rowguid", "path" : "$.rowguid" }]'
​
.ingest into table T ('adl://contoso.azuredatalakestore.net/Path/To/File/file1.ext;impersonate') with (format='csv’)
.set RecentErrors <| LogsTable | where Level == "Error" and Timestamp > now() - time(1h)
.ingest inline into table Purchases <| Shoes,1000 Wide Shoes,50 "Coats, black",20 "Coats with ""quotes""",5
.export async compressed to csv ( h@"https://storage1.blob.core.windows.net/containerName;secretKey", h@"https://storage1.blob.core.windows.net/containerName2;secretKey" ) with ( sizeLimit=100000, namePrefix=export, includeHeaders=all, encoding =UTF8NoBOM )
<| myLogs | where id == "moshe" | limit 10000
.export async to sql MySqlTable
h@"Server=tcp:myserver.database.windows.net,1433;Database=MyDatabase;Authentication=Active Directory Integrated;Connection Timeout=30;"
<| print Id="d3b68d12-cbd3-428b-807f-2c740f561989", Name="YSO4", DateOfBirth=datetime(2017-10-15)
.set table Employees policy ingestiontime true
​
Employees | where cursor_after('')
​
Employees | where cursor_after('636040929866477946') // -> 636040929866477950
Employees | where cursor_after('636040929866477950') // -> 636040929866479999
Employees | where cursor_after('636040929866479999') // -> 636040939866479000
Tagging(用来管理Extent)
​
.ingest ... with @'{"tags":"[\"drop-by:2016-02-17\"]"}' .drop extents <| .show table MyTable extents w

Azure Data Explorer(Kusto)学习笔记相关推荐

  1. 用KUSTO查询语句(KQL)在Azure Data Explorer Database上查询LOG实战

    目录 (一)前言 (二)Azure Data Explorer介绍及应用 1. 什么是Azure Data Explorer? 2. 实战案例 (1)案例背景 (2)进入Azure Data Expl ...

  2. azure_面向初学者的Azure Data Explorer

    azure This article discusses what exactly an Azure Data Explorer is and its important features. We w ...

  3. sql azure 语法_在Azure Data Studio中学习用于SQL Notebook的Markdown语言

    sql azure 语法 Microsoft supports SQL Notebooks in Azure Data Studio. It is an exciting feature that a ...

  4. [Big Data - Kafka] kafka学习笔记:知识点整理

    一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余:消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险.许 ...

  5. 数据分析---《Python for Data Analysis》学习笔记【04】

    <Python for Data Analysis>一书由Wes Mckinney所著,中文译名是<利用Python进行数据分析>.这里记录一下学习过程,其中有些方法和书中不同 ...

  6. Goland自定义头部注释,增加author和data等(学习笔记,不作教程)

  7. sql azure 语法_在Azure Data Studio中计划SQL笔记本

    sql azure 语法 SQL Notebooks are an interactive way of creating documents, executing T-SQL queries alo ...

  8. 《R数据科学》学习笔记|Note5:使用dplyr进行数据转换(下)

    点击蓝字 关注我! 写在前面 本系列为<R数据科学>(R for Data Science)的学习笔记.相较于其他R语言教程来说,本书一个很大的优势就是直接从实用的R包出发,来熟悉R及数据 ...

  9. Vue2.0学习笔记二 基础语法

    1. Mustache语法 Mustache语法也叫插值表达式,Mustache语法式通过{{}}渲染到页面,并且数据是响应式的. 数据的响应式:数据的变化导致页面的内容随之变化 效果图: 2. 指令 ...

最新文章

  1. mysql二进制还原表_MYSQL 二进制还原
  2. WinFrom子窗体向父窗体传值
  3. 关于使用QQ、新浪微博、腾讯微博等第三方登录网站的开发过程(一)
  4. liferay 导入源码问题
  5. 爱因斯坦为什么不是普通人?看他怎么喝茶就明白了,差距太明显了!没法比.......
  6. 【需求工程】需求工程
  7. 如何在windows下安装Python(Python入门教程)
  8. 电脑打字学习_新手如何学会电脑打字 走上盲打之路
  9. netcore里使用jwt做登陆授权
  10. shell 字符串中是否包含任一字符串
  11. Scipy总结(constants)
  12. 校园网页设计成品 学校班级网页制作模板 大学生静态HTML网页源码 dreamweaver网页作业 简单网页课程成品
  13. 喜讯!清华大学镜像站恢复anaconda加速
  14. 微信oauth2.0授权
  15. 批量下载网页图片,python只需23行代码
  16. 英语学习者的十句经典名言
  17. 老郑学长 | 天津师范大学体育硕士怎么样
  18. 为什么计算机学硕人那么少,考研分数看似不高,为什么考上的人相对很少?总结得很精辟...
  19. 【NXP出品PINS-TOOL-IMX】IMX6ULL引脚配置工具PINS-TOOL-IMX介绍
  20. 安卓ios文件上传.net 服务器,Windows 和 iOS 13无缝传输文件最快的方案

热门文章

  1. 2018 java蓝桥杯校赛题目
  2. H5新人福音~零配置搭建现代化的前端工程
  3. 12、OpenCV Python 图像梯度
  4. python 运维自动化之路 Day2
  5. jQuery之ajax的跨域获取数据
  6. 利用线性代数的方法求斐波那契数列的通项
  7. 开始-运行 下常用快捷命令
  8. Jelinek-Merer与Absolute discounting 平滑方法
  9. 如何去掉文章里的非关键词c++_B2B/B2C网站:文章标题如何写才能促进搜索排名...
  10. python爬取bilibili弹幕_python爬虫:bilibili弹幕爬取+词云生成