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的更多相关文章

  1. PythonStudy——比较运算符 Comparison operator

    1.运算结果为bool类型 print(3 > 5) Output: False 2.可以连比 num = 10 print(1 < num < 20)# 与之上的等价写法是: pr ...

  2. pig 的chararry不能用于比较的类型可以comparison operator

    pig 的chararry类型可以是由场,通过现场实地比较. element_id 这是chararray种类. 声明: no_app_category_mapping = filter no_ele ...

  3. Pig是轻类型的

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

  4. C++20草案中的宇宙飞船运算符(<=>,spaceship operator)

    C++20草案中的宇宙飞船运算符(<=>,spaceship operator) Herb Sutter提议的新三路运算符<=>已经被合入C++20草案中. 宇宙飞船运算符(h ...

  5. C语言讲义——运算符(operator)

    运算符(operator) 算数运算符 7种 关系运算符 6种 逻辑运算符 3种 位运算符 6种 赋值运算符 11种 共5类33种 算术运算符 加 + 减 - 乘 * 除 / 取余 % (仅限于整数类 ...

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

    类型的相关函数 函数的原型  :函数返回值类型 函数名(参数1类型 参数1,参数2类型 参数2--) 1, 任何一个函数,都要考虑它是否有返回值以及该返回值的类型,如果该函数没有返回值,就用void来 ...

  7. 简明python教程 --C++程序员的视角(一):数值类型、字符串、运算符和控制流

    最初的步骤 Python是大小写敏感的 任何在#符号右面的内容都是注释 >>> help('print')在“print”上使用引号,那样Python就可以理解我是希望获取关于“pr ...

  8. JavaScript基础之注释,类型,输出,运算符

    JavaScript是一种依托于网页为宿主的脚本语言,JavaScript是一门非常强大的语言,尤其对于web端,用途广泛,好用,偏向于操作网页,可以操作网页中的任何一个元素,JavaScript的缺 ...

  9. 值类型之间的相互转化,运算符,if条件判断,循环,函数

    值类型之间的相互转化 number | string | boolean 一.转换为boolean=>Boolean(a); var num = 10; var s = '123'; var b ...

随机推荐

  1. JSON.NET的Self referencing loop detected with type的原因以及解决办法

    模型中有循环引用是很常见的.例如,以下模型显示双向导航属性: : public class Category : { : public Category() : { : Products = new ...

  2. 利用Runtime实现简单的字典转模型

    前言 我们都知道,开发中会有这么一个过程,就是将服务器返回的数据转换成我们自己定义的模型对象.当然服务器返回的数据结构有xml类型的,也有json类型的.本文只讨论json格式的. 大家在项目中一般是 ...

  3. SVN提交时显示:Path is not a working copy directory

    说明你地址没有checkout啊 先checkout,才能add和commi. 要是在一个已有的项目出现这个错误,就是包含这个地址的文件夹没添加进去,去上一层再试一次. 总之,养成在项目根目录提交的习 ...

  4. Lock锁子类了解一下

    前言 回顾前面: 多线程三分钟就可以入个门了! Thread源码剖析 多线程基础必要知识点!看了学习多线程事半功倍 Java锁机制了解一下 AQS简简单单过一遍 只有光头才能变强! 上一篇已经将Loc ...

  5. 【python标准库模块四】Json模块和Pickle模块学习

    Json模块 原来有个eval函数能能够从字符串中提取出对应的数据类型,比如"{"name":"zhangsan"}",可以提取出一个字典. ...

  6. 详解BLE连接建立过程

    同一款手机,为什么跟某些设备可以连接成功,而跟另外一些设备又连接不成功?同一个设备,为什么跟某些手机可以建立连接,而跟另外一些手机又无法建立连接?同一个手机,同一个设备,为什么他们两者有时候连起来很快 ...

  7. Oracle中rownum的说明及使用技巧

    一.rownum的说明 rownum是oracle特有的一个关键字. (1)对于基表,在insert记录时,oracle就按照insert的顺序,将rownum分配给每一行记录,因此在select一个 ...

  8. Hibernate之SchemaExport的使用

    @Test public void testCreateDB(){ Configuration cfg = new Configuration().configure(); SchemaExport ...

  9. Android makefile编写基础

    首先来看一个简单的Android makefile,这个是我上篇文章写的,重新摘出来: LOCAL_PATH:=$(call my-dir) include $(CLEAR_VARS) LOCAL_M ...

  10. java.util.Arrays类详解(源码总结)

    概述 Arrays类位于java.util包下,是一个对数组操作的工具类.今天详细的看了看Arrays类的4千多行源码,现将Arrays类中的方法做一个总结(JDK版本:1.6.0_34).Array ...