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)

时间: 2024-10-21 10:37:52

pig 的chararry类型不能用比较运算符comparison operator的相关文章

Pig是轻类型的

总体来说Pig是“强类型”的,但Pig又允许用户不指定输入数据的类型,而可以自己根据用户的使用方式进行推测. 称Pig是“轻类型”的更合适,它确实对类型有严格的要求,但是如果没有明确定义类型也是可以处理的.

C++20草案中的宇宙飞船运算符(&lt;=&gt;,spaceship operator)

C++20草案中的宇宙飞船运算符(<=>,spaceship operator) Herb Sutter提议的新三路运算符<=>已经被合入C++20草案中. 宇宙飞船运算符(hh)形式如lhs<=>rhs. 比如a与b是整型,那么a<=>b返回std::strong_ordering类型的纯右值(prvalue,不能取地址那种): 如果a<b,(a<=>b)返回std::strong_ordering::less 如果a>b,(a&l

php的注释、变量、类型、常量、运算符、比较符、条件语句;

php的注释 1.// 2.# 3./*  */ 变量 变量是储存信息的容器: 变量规则: 1.变量以$开头,后面跟名称>>>$sum; 2.变量必须以字母或下滑先开头,不能用数字开头: 3.变量名称对大小写敏感>>>$q与$Q是不相同的: php数据类型 四种标量类型: 1.Boolean(布尔型)>>>True  False; 2.Integer(整型)>>>没有小数的数字,正负均可: 3.Float(浮点型)>>&g

php类型的相关函数,运算符,条件判断,循环

类型的相关函数 函数的原型  :函数返回值类型 函数名(参数1类型 参数1,参数2类型 参数2--) 1, 任何一个函数,都要考虑它是否有返回值以及该返回值的类型,如果该函数没有返回值,就用void来表示! 2, 如果函数参数的类型或者函数返回值的类型有很多个,就用mixed来代替,意思就是混合类型,也叫作"伪类型" gettype   string gettype ( mixed $var ) 返回一个数据(变量或常量或表达式)的类型 var ,由于php的数据类型只有8种,一般它的

python基础复习-1-1文件类型、变量、运算符、表达式

文件类型: .py python源文件 由python解释器执行 .pyc python源码编译后生成的文件(字节代码) 编译方法: 源码文件中使用py_compile模块 import py_compile py_complie.compile('***.py') .pyo python源码优化编译后后文件 python -O -m compile ***.py (无需要源码中使用 compile模块) -O 表示优化 -m 表示模块 python 变量 变量是计算机内存中的一个区域,可以存储

可空类型 int?及?相关运算符

int?可空类型 值类型不能为null,所以出现了int?为可空类型,此时可以为Null int与int?不能直接进行运算,必须用显示转换或者int?.value才可以进行运算 int? op1 = 5; int op2 = 6; //op1不能为null,否则会报错 int op3 = (int)op1 + op2; int op4 = op1.value+op2; 当进行乘法运算时 int? op1 = null; int? op2 = 10; //对于除bool?外所有的简单可空类型,下述

函子(Monad)新解:函子定义了一个类型(泛型)和建立在这个类型上的一组运算符

这组运算符和代数中的运算加减乘除运算符一样,符合一定的定律:结合律.(交换律)等: 函数式编程的核心(底层支持)就是这些类型和运算符的定义. 函子就是定义这些类型和运算符的(). 运算符通常为单目运算??运算符的被操作数是(高阶)数据,操作数是配置函数,操作本身是高阶函数: 本质是:结合函数式特点,对运算规则进行了重新的定义. 原文地址:https://www.cnblogs.com/feng9exe/p/10184138.html

python入门之类型、条件、运算符、流程控制之if判断

1:可变.不可变类型 可变类型:值改变,id不变,原值可以被修改 可变类型包括:list,dict l = [111,222,333] print(id(l)) l[0] = 444 print(l) print(id(l)) # l中的第一个内容被修改,但两个结果id是相同的 dic = {'k1':111,'k2':222} print(id(dic)) dic['k1'] = 3333333333 print(dic) print(id(dic)) # dic中的'k1'被修改,但是两个结

Java基本类型,数据转换及运算符

一.Demo.javapublic class Demo { //定义一个类 public static void main(String[] args) { //主方法,一切程序的起点  /* 在屏幕上打印输出 */  System.out.println("Hello World!"); }}? public class定义:类名称必须和文件名称保持一致,否则程序将无法编译,在一个*.Java之中只能有一个public 类:? 主方法main():主方法表示的是一个程序起点,所有的