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)

转载于:https://www.cnblogs.com/cl1024cl/p/6205409.html

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

  1. Matlab常见报错:错误使用 conv2不支持 N 维数组;cell类型数组不支持运算符

    一.错误使用 conv2不支持 N 维数组: 错误样例: 原因:提示错误使用 conv2不支持 N 维数组,可能是因为你读取的图像并不是灰度图像,而是RGB图像,有red/green/blue三种颜色 ...

  2. C++——运算符重载operator

    C++--运算符重载operator C++ prime plus第11章,运算符重载是C++的一种多态.运算符重载格式如下: operator运算符(argument-list) 1.做普通函数重载 ...

  3. 运算符(operator)

    一.运算符(operator) 1.基本运算符: 算数运算符:加减乘除"+""-""*""/""%" ...

  4. Python编程基础:第五十节 海象运算符Walrus Operator

    第五十节 海象运算符Walrus Operator 前言 实践 前言 海象运算符:=是Python3.8的新特性,其作用是将数值赋值给变量,并将其作为大型表达式的一部分进行执行,海象运算符不能单独使用 ...

  5. 【C++】运算符重载 Operator Overload

    运算符重载 Operator Overload 可以为运算符增加一些新的功能 class Point { private:int m_x;int m_y; public:Point(int x, in ...

  6. 【Kotlin】变量简介 ( 可空类型 | lateinit | 初始化判定 | 非空类型 | !! 与 ? 修饰符 | ?= ?. ?: 运算符 | 抽象属性变量)

    文章目录 I . Kotlin 变量总结 II . Kotlin 非空变量 III . 非空变量不能赋空 IV . lateinit 关键字 V . lateinit 初始化判定 VI . Kotli ...

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

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

  8. python学习1:注释\变量类型\转换函数\转义字符\运算符

    python基础学习 与大多数语言不同,python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} .缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数. (一个tab= ...

  9. C# 可空类型和空接合运算符(??)

    随手翻阅C#高级编程时,看到可空类型和运算符这一节,又发现了自己的一个C#知识盲点.可空类型: 可空类型只能用于值类型,不能用于引用类型,引用类型本身支持null值. 如果直接把null赋值给int类 ...

最新文章

  1. 现代计算机基本工作原理,现代计算机的基本工作原理是
  2. Linux 配置开机自启 和 修改环境变量
  3. linux dhcp 论文,毕业论文—基于linux的dhcp服务器配置.doc
  4. 如何将传统OA移动化?
  5. 利用大数据技术探索“数字公民”创新
  6. OOP设计模式[JAVA]——03职责链模式
  7. 打造高效的工作环境 – SHELL 篇
  8. Mon Nov 18 01:40:52 CST 2019 WARN: Establishing SSL connection without server's identity verificatio
  9. boost::hana::suffix用法的测试程序
  10. python怎么让输出结果为01_python从0到1--01.python中的输入/输出(基础篇)
  11. windows剪贴板
  12. linux恢复rm删除文件ssd,科学网—linux恢复rm -rf删除的文件 - 罗晓光的博文
  13. 推荐系统组队学习——GBDT+LR
  14. .net dropdownlist 動態顯示,指定字段
  15. 【SICP练习】31 练习1.37
  16. 网络编程~socket
  17. 为Exynos4412移植2022版U-Boot(一)步骤及其原理分析
  18. Blue Coat让企业在降低风险的同时利用网络应用程序
  19. 【Doris Weekly FAQ】2021.08.02~2021.08.15
  20. ienumerable vs iqueryable异常

热门文章

  1. Android在Shell环境下运行Linux命令
  2. C# 命令行编译器详解
  3. ls –al命令来观察文件的权限,每个文件的权限都用10位表示,并分为四段!
  4. 从无到有写一个运维APP(二)
  5. UltraEdit正则表达式介绍及实例
  6. 一张图看懂数据防泄漏
  7. Linux知识点记录
  8. 企业搜索引擎开发之连接器connector(二十九)
  9. 评价一个软件的3个角度
  10. SQL Server 学习笔记