index函数

SparkSQL | 窗口函数

佐手、 提交于 2020-03-02 07:42:30
窗口函数的定义引用一个大佬的定义: a window function calculates a return value for every input row of a table based on a group of rows。窗口函数与与其他函数的区别: 普通函数: 作用于每一条记录,计算出一个新列(记录数不变); 聚合函数: 作用于一组记录(全部数据按照某种方式分为多组),计算出一个聚合值(记录数变小); 窗口函数: 作用于每一条记录,逐条记录去指定多条记录来计算一个值(记录数不变)。 窗口函数语法结构: 函数名(参数)OVER(PARTITION BY 子句 ORDER BY 子句 ROWS/RANGE子句) 函数名: OVER: 关键字,说明这是窗口函数,不是普通的聚合函数; 子句 PARTITION BY: 分组字段 ORDER BY: 排序字段 ROWS/RANG窗口子句: 用于控制窗口的尺寸边界,有两种(ROW,RANGE) ROW: 物理窗口,数据筛选基于排序后的index RANGE: 逻辑窗口,数据筛选基于值 主要有以下三种窗口函数 ranking functions analytic functions aggregate functions 数据加载 from pyspark . sql . types import * schema =

JavaScript Array every() 方法

一曲冷凌霜 提交于 2020-02-29 17:00:39
every()方法是js中的迭代方法,用于检测数组中的元素是否满足指定条件。 1、依次执行数组元素,如果一个元素不满足条件就返回false,不会继续执行后面的元素判断;所有数组元素都满足条件则返回true。 2、不会改变原数组。 语法 /** * @param {参数类型} 参数名 参数说明 * { * function(currentValue, index,arr): //必须 * { * currentValue: 必须。元素值, * index: 可选。元素索引值, * arr: 可选。当前数组对象 * }, * thisValue: 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。 * } */ array.every(function(currentValue,index,arr){},thisValue); 示例 var arr = [ 1, 2, 3, 4, 5, 6 ]; var every = arr.every( function( val, index, arr){ console.log( 'val:' + val); //打印1,不会打印2、3、4、5、6 return val > 4; }); console.log(every); //返回false 来源: https://www.cnblogs.com/plBlog/p

Go基础系列:Go slice详解

半腔热情 提交于 2020-02-29 09:24:22
slice表示切片(分片),例如对一个数组进行切片,取出数组中的一部分值。在现代编程语言中,slice(切片)几乎成为一种必备特性,它可以从一个数组(列表)中取出任意长度的子数组(列表),为操作数据结构带来非常大的便利性,如python、perl等都支持对数组的slice操作,甚至perl还支持对hash数据结构的slice。 但Go中的slice和这些语言的slice不太一样,前面所说的语言中,slice是一种切片的操作,切片后返回一个新的数据对象。而Go中的slice不仅仅是一种切片动作, 还是一种数据结构 (就像数组一样)。 slice的存储结构 Go中的slice依赖于数组,它的底层就是数组,所以数组具有的优点,slice都有。且slice支持可以通过append向slice中追加元素,长度不够时会动态扩展,通过再次slice切片,可以得到得到更小的slice结构,可以迭代、遍历等。 实际上slice是这样的结构:先创建一个有特定长度和数据类型的底层数组,然后从这个底层数组中选取一部分元素,返回这些元素组成的集合(或容器),并将slice指向集合中的第一个元素。换句话说, slice自身维护了一个指针属性,指向它底层数组中的某些元素的集合 。 例如,初始化一个slice数据结构: my_slice := make([]int, 3,5) // 输出slice fmt

Django回顾之_03_Model属性及后端配置

僤鯓⒐⒋嵵緔 提交于 2020-02-28 02:16:20
1. Django ORM O(objects):类和对象。 R(Relation):关系,关系数据库中的表格。 M(Mapping):映射。 Django ORM框架的功能: a) 建立模型类和表之间的对应关系,允许我们通过面向对象的方式来操作数据库。 b) 根据设计的模型类生成数据库中的表格。 c) 通过方便的配置就可以进行数据库的切换。 2. Django数据库配置 2.1 mysql命令回顾 登录mysql数据库: mysql –uroot –p 查看有哪些数据库:show databases 创建数据库:create database test2 charset=utf8; #切记:指定编码 使用数据库:use test2; 查看数据库中的表:show tables; 2.2 Django配置使用mysql数据库 修改settings.py中的DATABASES。 sqlite3改为mysql,以及用户名、密码 DATABASES = { 'default': { # 'ENGINE': 'django.db.backends.sqlite3', 'ENGINE': 'django.db.backends.mysql', # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 'NAME': 'xxxx', # 使用的数据库的名字

Django _web框架本质

杀马特。学长 韩版系。学妹 提交于 2020-02-28 00:34:30
Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端。 这样我们就可以自己实现Web框架了。 socket服务端 import socket sk = socket.socket() sk.bind(( "127.0.0.1", 80)) sk.listen() while True: conn, addr = sk.accept() data = conn.recv( 8096) conn.send(b "OK") conn.close() 可以说Web服务本质上都是在这十几行代码基础上扩展出来的。这段代码就是它们的祖宗。 用户在浏览器中输入网址,浏览器会向服务端发送数据,那浏览器会发送什么数据?怎么发?这个谁来定? 你这个网站是这个规定,他那个网站按照他那个规定,那互联网还能玩么? 所以,必须有一个统一的规则,让大家发送消息、接收消息的时候都有个格式依据,不能随便写。 这个规则就是HTTP协议,以后浏览器发送请求信息也好,服务器回复响应信息也罢,都要按照这个规则来。 HTTP协议主要规定了客户端和服务器之间的通信格式,那HTTP协议是怎么规定消息格式的呢? 让我们首先打印下我们在服务端接收到的消息是什么。 import socket sk = socket.socket() sk.bind(( "127.0

Python中enumerate函数的解释和可视化

半腔热情 提交于 2020-02-26 14:35:10
enumerate() 的作用 在许多情况下,我们需要在迭代数据对性(即我们可以循环的任何对象)时获取元素的索引。实现预期结果的一种方法是: animals = ['dog', 'cat', 'mouse'] for i in range(len(animals)): print(i, animals[i]) 输出: 0 dog 1 cat 2 mouse 大多数C ++ / Java背景的开发人员都可能会选择上述实现,通过索引迭代数据对象的长度是他们熟悉的概念。但是,这种方法效率很低。 我们可以使用enumerate()来实现: for i, j in enumerate(example): print(i, j) enumerate()提供了强大的功能,例如,当您需要获取索引列表时,它会派上用场: (0, seq[0]), (1, seq[1]), (2, seq[2]), ... 案例研究1:枚举字符串 字符串只是一个列表 为了更好地理解字符串枚举,我们可以将给定的字符串想象为单个字符(项)的集合。因此,枚举字符串将为我们提供: 1.字符的索引。 2.字符的值。 word = "Speed" for index, char in enumerate(word): print(f"The index is '{index}' and the character value is

Python面试重点(基础篇)

不羁岁月 提交于 2020-02-26 13:09:55
Python面试重点(基础篇) 第一部分 必答题 简述列举了解的编程语言及语言间的区别? pythonjavacc++c#gophp----------------------------------------------------------------编程语言分为解释型和编译型: 解释型语言: python 在编写代码的时候不需要编译,在执行的时候,想要用专用的解释器对代码进行编译,全部编译后,才能执行代码 编译型语言: c c++ go 每写一行代码,解释器就会编译一行,然后就可以执行了,编译后的代码不用再次编译 java属于混合型语言 列举Python2和Python3的区别? - python2 中 1.input 获取的就是数据本身 2.源码不统一,重复代码 3.除法的时候返回的是向下取整 4.range()中打印返回的是一个列表 5.int有整形和长整型 6.二次编码用的是ascii 7.只有 iter() 和 next() 8.python2中import包,如果包中没有__init__.py文件就报错 9.多继承:全部都是经典类,经典类就是基类不继承object类 10.python2中的不等于号可以是!=或者<>- python3 中 1.input获取的内容都是字符串 2. 源码统一,不会出现重复代码. 3. 除法返回的是浮点数 4. range(

python_day4

不羁的心 提交于 2020-02-26 11:03:03
目录: 函数补充进阶 函数对象 函数的嵌套 名称空间与作用域 闭包函数 函数之装饰器 函数之迭代器 函数之生成器 内置函数 一、函数补充进阶    1、函数对象: 函数是第一类对象,即函数可以当作数据传递,它的应用形式也被称为高阶函数,函数的特性如下: a. 可以被引用 1 # def foo(): 2 # print('from foo') 3 # 4 # func = foo 5 # print(foo) # 不加括号为foo函数的内存地址 6 # print(func) # func指向foo内存地址 7 # func() # foo内存地址,加()执行 8 ''' 9 结果: 10 <function foo at 0x0000007D79483E18> 11 <function foo at 0x0000007D79483E18> 12 from foo 13 ''' View Code b. 可以当作参数传递 1 # def foo(): 2 # print('from foo') 3 # 4 # def bar(func): 5 # print(func) 6 # func() 7 # 8 # bar(foo) # foo函数内存地址被当作参数传递到bar函数中,并调用 9 10 ''' 11 结果: 12 <function foo at

微信小程序零基础入门模板语法

筅森魡賤 提交于 2020-02-26 05:30:18
一、数据绑定 1、普通写法 2、组件属性 3、bool类型 demo1中demo.js中的data放的是初始化数据 // pages/demo1/demo1.js Page({ /** * 页面的初始数据 */ data: { msg:"测试绑定数据", number:1000, bool:false, user:{ age:10, name:"张三" } }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage:

JS数组方法(ES5、ES6)

99封情书 提交于 2020-02-25 12:48:11
1. arr.push() 从后面添加元素,添加一个或多个,返回值为添加完后的数组长度 1 let arr = [1,2,3,4,5] 2 console.log(arr.push(6,7)) // 7 3 console.log(arr) // [1,2,3,4,5,6,7] 2. arr.pop() 从后面删除元素,只能是一个,返回值是删除的元素 1 let arr = [1,2,3,4,5] 2 console.log(arr.pop()) // 5 3 console.log(arr) // [1,2,3,4] 3. arr.shift() 从前面删除元素,只能是一个,返回值是删除的元素 1 let arr = [1,2,3,4,5] 2 console.log(arr.shift()) // 1 3 console.log(arr) // [2,3,4,5] 4. arr.unshift() 从前面添加元素,添加一个或多个,返回值是添加完后的数组的长度 1 let arr = [1,2,3,4,5] 2 console.log(arr.unshift(6,7)) // 7 3 console.log(arr) // [6,7,1,2,3,4,5] 5. arr.splice(index,num) 删除从index(索引值)开始之后的那num个元素,返回值是删除的元素数组