pig 的chararry类型不能用比较运算符comparison operator
pig 的chararry类型可能是按字段,逐个字段进行比较。
element_id 是chararray类型,
语句:
no_app_category_mapping = filter no_element_id by element_id == '' or element_id is null or element_id == '0' or element_id >='14';
其中,element_id >='14'是错误的用法。
comparison operator不能操作chararray类型。
执行结果是 element_id为8 的被找出来了。‘8’>='14',很奇怪啊!
而改成 element_id <='14'时,再执行时,
执行结果找到了element_id =‘1’和element_id =‘11’的,说明不行。
原理:估计是升级为bytearray,然后,按字段比较,逐个字段,所以,8>1,而1相同时,1<4
所以11小于14,而8大于14.
pig官网有说明:貌似只能用==和!=,两边不一致是,implicit cast支持从低到高,不支持高到低。
如下:
Comparison Operators
Description
Operator |
Symbol |
Notes |
equal |
== |
|
not equal |
!= |
|
less than |
< |
|
greater than |
> |
|
less than or equal to |
<= |
|
greater than or equal to |
>= |
|
pattern matching |
matches |
Takes an expression on the left and a string constant on the right. expression matches string-constant Use the Java format for regular expressions. |
Use the comparison operators with numeric and string data.
Examples
Numeric Example
X = FILTER A BY (f1 == 8);
String Example
X = FILTER A BY (f2 == 'apache');
Matches Example
X = FILTER A BY (f1 matches '.*apache.*');
Types Table: equal (==) operator
bag |
tuple |
map |
int |
long |
float |
double |
chararray |
bytearray |
boolean |
datetime |
biginteger |
bigdecimal |
|
bag |
error |
error |
error |
error |
error |
error |
error |
error |
error |
error |
error |
error |
error |
tuple |
boolean (see Note 1) |
error |
error |
error |
error |
error |
error |
error |
error |
error |
error |
error |
|
map |
boolean (see Note 2) |
error |
error |
error |
error |
error |
error |
error |
error |
error |
error |
||
int |
boolean |
boolean |
boolean |
boolean |
error |
cast as boolean |
error |
error |
error |
error |
|||
long |
boolean |
boolean |
boolean |
error |
cast as boolean |
error |
error |
error |
error |
||||
float |
boolean |
boolean |
error |
cast as boolean |
error |
error |
error |
error |
|||||
double |
boolean |
error |
cast as boolean |
error |
error |
error |
error |
||||||
chararray |
boolean |
cast as boolean |
error |
error |
error |
error |
|||||||
bytearray |
boolean |
error |
error |
error |
error |
||||||||
boolean |
boolean |
error |
error |
error |
|||||||||
datetime |
boolean |
error |
error |
||||||||||
biginteger |
boolean |
error |
|||||||||||
bigdecimal |
boolean |
Note 1: boolean (Tuple A is equal to tuple B if they have the same size s, and for all 0 <= i < s A[i] == B[i])
Note 2: boolean (Map A is equal to map B if A and B have the same number of entries, and for every key k1 in A with a value of v1, there is a key k2 in B with a value of v2, such that k1 == k2 and v1 == v2)
pig 的chararry类型不能用比较运算符comparison operator的更多相关文章
- PythonStudy——比较运算符 Comparison operator
1.运算结果为bool类型 print(3 > 5) Output: False 2.可以连比 num = 10 print(1 < num < 20)# 与之上的等价写法是: pr ...
- pig 的chararry不能用于比较的类型可以comparison operator
pig 的chararry类型可以是由场,通过现场实地比较. element_id 这是chararray种类. 声明: no_app_category_mapping = filter no_ele ...
- Pig是轻类型的
总体来说Pig是“强类型”的,但Pig又允许用户不指定输入数据的类型,而可以自己根据用户的使用方式进行推测. 称Pig是“轻类型”的更合适,它确实对类型有严格的要求,但是如果没有明确定义类型也是可以处 ...
- C++20草案中的宇宙飞船运算符(<=>,spaceship operator)
C++20草案中的宇宙飞船运算符(<=>,spaceship operator) Herb Sutter提议的新三路运算符<=>已经被合入C++20草案中. 宇宙飞船运算符(h ...
- C语言讲义——运算符(operator)
运算符(operator) 算数运算符 7种 关系运算符 6种 逻辑运算符 3种 位运算符 6种 赋值运算符 11种 共5类33种 算术运算符 加 + 减 - 乘 * 除 / 取余 % (仅限于整数类 ...
- php类型的相关函数,运算符,条件判断,循环
类型的相关函数 函数的原型 :函数返回值类型 函数名(参数1类型 参数1,参数2类型 参数2--) 1, 任何一个函数,都要考虑它是否有返回值以及该返回值的类型,如果该函数没有返回值,就用void来 ...
- 简明python教程 --C++程序员的视角(一):数值类型、字符串、运算符和控制流
最初的步骤 Python是大小写敏感的 任何在#符号右面的内容都是注释 >>> help('print')在“print”上使用引号,那样Python就可以理解我是希望获取关于“pr ...
- JavaScript基础之注释,类型,输出,运算符
JavaScript是一种依托于网页为宿主的脚本语言,JavaScript是一门非常强大的语言,尤其对于web端,用途广泛,好用,偏向于操作网页,可以操作网页中的任何一个元素,JavaScript的缺 ...
- 值类型之间的相互转化,运算符,if条件判断,循环,函数
值类型之间的相互转化 number | string | boolean 一.转换为boolean=>Boolean(a); var num = 10; var s = '123'; var b ...
随机推荐
- JSON.NET的Self referencing loop detected with type的原因以及解决办法
模型中有循环引用是很常见的.例如,以下模型显示双向导航属性: : public class Category : { : public Category() : { : Products = new ...
- 利用Runtime实现简单的字典转模型
前言 我们都知道,开发中会有这么一个过程,就是将服务器返回的数据转换成我们自己定义的模型对象.当然服务器返回的数据结构有xml类型的,也有json类型的.本文只讨论json格式的. 大家在项目中一般是 ...
- SVN提交时显示:Path is not a working copy directory
说明你地址没有checkout啊 先checkout,才能add和commi. 要是在一个已有的项目出现这个错误,就是包含这个地址的文件夹没添加进去,去上一层再试一次. 总之,养成在项目根目录提交的习 ...
- Lock锁子类了解一下
前言 回顾前面: 多线程三分钟就可以入个门了! Thread源码剖析 多线程基础必要知识点!看了学习多线程事半功倍 Java锁机制了解一下 AQS简简单单过一遍 只有光头才能变强! 上一篇已经将Loc ...
- 【python标准库模块四】Json模块和Pickle模块学习
Json模块 原来有个eval函数能能够从字符串中提取出对应的数据类型,比如"{"name":"zhangsan"}",可以提取出一个字典. ...
- 详解BLE连接建立过程
同一款手机,为什么跟某些设备可以连接成功,而跟另外一些设备又连接不成功?同一个设备,为什么跟某些手机可以建立连接,而跟另外一些手机又无法建立连接?同一个手机,同一个设备,为什么他们两者有时候连起来很快 ...
- Oracle中rownum的说明及使用技巧
一.rownum的说明 rownum是oracle特有的一个关键字. (1)对于基表,在insert记录时,oracle就按照insert的顺序,将rownum分配给每一行记录,因此在select一个 ...
- Hibernate之SchemaExport的使用
@Test public void testCreateDB(){ Configuration cfg = new Configuration().configure(); SchemaExport ...
- Android makefile编写基础
首先来看一个简单的Android makefile,这个是我上篇文章写的,重新摘出来: LOCAL_PATH:=$(call my-dir) include $(CLEAR_VARS) LOCAL_M ...
- java.util.Arrays类详解(源码总结)
概述 Arrays类位于java.util包下,是一个对数组操作的工具类.今天详细的看了看Arrays类的4千多行源码,现将Arrays类中的方法做一个总结(JDK版本:1.6.0_34).Array ...