替换 hive 中的空字符串 - Nvl 和 COALESCE 已尝试

2024-01-27

如何用其他值替换空字符串(长度 0 )?已使用Nvl and COALESCE但两者都不会替换为替换值,因为该值不为空。我可以用case语句,但寻找内置函数(如果有)。


因为你有空字符串所以当我们使用合并或 nvl仅当我们有空值在数据中。这些功能不适用于空字符串。

对于空字符串:

hive> select coalesce(string(""),"1");
+------+--+
| _c0  |
+------+--+
|      |
+------+--+
hive> select nvl(string(""),"1");
+------+--+
| _c0  |
+------+--+
|      |
+------+--+

对于空值:

hive> select coalesce(string(null),"1");
+------+--+
| _c0  |
+------+--+
| 1    |
+------+--+
hive> select nvl(string(null),"1");
+------+--+
| _c0  |
+------+--+
| 1    |
+------+--+

Try to 改变表格 https://stackoverflow.com/questions/43263038/empty-string-is-not-treated-as-null-in-hive并添加这个属性

TBLPROPERTIES('serialization.null.format'='')

如果此属性不将空字符串显示为 null,那么我们需要使用case/if语句来替换空字符串。

您可以使用if statement https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-ConditionalFunctions

if(布尔测试条件, T 值True, T 值FalseOrNull)

 hive> select if(length(trim(<col_name>))=0,'<replacement_val>',<col_name>) from <db>.<tb>;

Example:

 hive> select if(length(trim(string("")))=0,'1',string("col_name"));
    +------+--+
    | _c0  |
    +------+--+
    | 1    |
    +------+--+
hive> select if(length(trim(string("1")))=0,'1',string("col_name"));
    +-----------+--+
    |    _c0    |
    +-----------+--+
    | col_name  |
    +-----------+--+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

替换 hive 中的空字符串 - Nvl 和 COALESCE 已尝试 的相关文章

随机推荐

  • response.body.getReader 不是函数

    我正在使用 fetch 调用 Web api 我想将响应作为流读取 但是当我在 response body 上调用 getReader 时 出现错误 TypeError response body getReader 不是函数 const
  • 使用 systemjs 在 typescript 中导入位于应用程序文件夹外部的共享服务

    我有两个 Angular 2 应用程序 结构如下 app 应用程序1 应用程序2 共享 在我的 Angular 2 组件 用打字稿编写 中 我导入了几个模块 位于同一文件夹中 没有任何问题 从 test1 service 导入 TestSe
  • 为什么在检查 $pristine 或 $setDirty() 时在 ng-include 中形成 undefined ?

    当我单击 检查 按钮时 以下代码抛出错误 TypeError 无法读取未定义的属性 pristine app controller MainCtrl function scope other stuff controller Ctrl2 f
  • 如何升级Python venv版本[重复]

    这个问题在这里已经有答案了 我安装了Python3 10 并且在我一直在从事的项目中有一个venv 我不明白如何轻松升级 我的背景主要是 Node 和 JS 这肯定更简单 更容易更改版本 我只是想创建一个新的 venv 但这不起作用 mpa
  • 如何获取 MySQL 中特定行的偏移量?

    我正在尝试创建一个图像数据库 该数据库不保存一致的 ID 记录 例如 它可能是 1 2 6 7 12 但正如您所看到的 只有 5 行 在表中我有 fileid 和 filename 我创建了一个 PHP 脚本 当我给出文件 ID 时 它会显
  • java.lang.ClassCastException:org.hibernate.hql.ast.tree.SqlNode 无法转换为 org.hibernate.hql.ast.tree.FromReferenceNode

    我正在尝试用以下内容更新记录HQL查询 但我得到了CastException 如果有人能帮助我 我将非常感激 我已经在互联网上检查了一段时间 但找不到任何有关此的信息 如果您有关于此例外的更多信息 请告诉我 返回的完整错误消息 Except
  • MySQL LIKE + php sprintf

    test sprintf SELECT FROM table WHERE text LIKE s mysql real escape string test echo test output SELECT FROM table WHERE
  • 从各种 JSON 路径创建 JSON 对象

    我们需要从提供的各种 JSONPaths 创建 JSON 对象 例如 下面是要创建的新 JSON 对象中的两个路径以及该路径的值 student firstName Abc student subject physics mark 100
  • 如何使用 flutter cloud_firestore 包传递 firestore 身份验证令牌

    我在用Firebase 身份验证 REST api进行身份验证 这部分工作正常 因为我可以登录 注册用户 并且我可以获得uid和授权token back 当尝试写入 Cloud Firestore 时 如果我将 Cloud Firestor
  • pytest 装置和 confest.py 模块可以跨包共享吗?

    假设我有packageA它提供了一个类usefulClass pytest 固定装置test stuff py模块 并测试配置conftest py模块 此外 假设我有packageBand packageC两者都导入packageA 通过
  • Azure Devops:如何使用 if 语句设置组变量

    我正在尝试根据管道中存在的一个变量来设置变量组 yaml 看起来像这样 但是当我运行管道时出现以下错误 如果我删除 组 QA or 组 PROD 管道运行没有任何问题 我究竟做错了什么 这是略有不同的解决方案 但您可以实现您的目标 如果我理
  • 在 Google App Engine 上使用 Python 进行开发时,应该使用什么模拟对象框架?

    我正在使用 Python 和 Django 如果有的话 在 Google App Engine 上开发一个应用程序 我应该帮助哪个模拟对象框架来协助单元测试 我看到有很多独立的项目 即http python mock sourceforge
  • 如何模拟返回 Task> 和 Task> 的方法?

    我正在尝试设置一个单元测试初始值设定项 以 Moq 形式 其中正在模拟接口方法 public interface IRepository Task
  • 管理实验中的多个任意逻辑模拟

    我们正在 AnyLogic 7 下开发 ABM 并且我们希望通过单个实验进行多个模拟 将为每次模拟运行设置不同的参数 以便为一小组标准场景生成结果 我们有一个无需按 运行 即可自动启动的实验 随后按下 运行 会增加实验计数器并重新运行模型
  • 为什么 Nettle 2.4 的 `configure` 找不到 GMP 5.0.2?

    我正在尝试建立GnuTLS http www gnu org software gnutls 在 Mac OS X 10 5 Leopard 服务器上 是的 我知道 它有点过时 但这就是该服务器目前正在运行的 并且遇到了构建问题Nettle
  • AngularJS 中的 ng-app V/S data-ng-app

    在AngularJS中使用时ng app ng app在文档中找到的将用于定义根元素以作为应用程序自动引导 在某些应用程序中 它被用作data ng app 以下两个声明是否有任何区别 如果是 则什么 如果否 则哪一个是重要的 为什么 1
  • Java线程睡眠与中断异常

    为什么睡眠线程需要 try catch 来捕获中断异常 为什么睡眠甚至会发出中断异常错误 这是我在java编程中真正想了解的两个问题 我一直在通过谷歌搜索 但仍然没有找到明确的解释来解释为什么会发生这两件事 An InterruptedEx
  • 无符号负基元?

    在 C 中我们可以创建原语unsigned 但他们总是积极的 还有一种方法可以生成无符号负变量吗 我知道 无符号 这个词的意思是 没有符号 所以也不是减号 但我认为C 必须提供它 No unsigned只能包含非负数 如果您需要一个仅表示负
  • 如何获取机器的mac地址

    我想要获取机器的 MAC 地址 但是下面编写的代码仅在 Internet 连接到我的机器时显示 MAC 地址 其他它将返回 null 我使用的是 Windows 7 import java net InetAddress import ja
  • 替换 hive 中的空字符串 - Nvl 和 COALESCE 已尝试

    如何用其他值替换空字符串 长度 0 已使用Nvl and COALESCE但两者都不会替换为替换值 因为该值不为空 我可以用case语句 但寻找内置函数 如果有 因为你有空字符串所以当我们使用合并或 nvl仅当我们有空值在数据中 这些功能不