Hive 查询:匹配字符串数组中的列值以制作标志

2024-01-12

我有一些记录,其中每一行都属于某些类别(数据类型 - 字符串数组)和一个单独的唯一类别列表(数据类型 - 字符串)。我需要将每一行与唯一的列表相匹配并为其创建标志。

Input:
------
ID   Category
1    ["Physics","Math"]
2    ["Math"]
3    ["Math,"Chemistry"]
4    ["Physics","Computer"]

现在我在本地的 Excel 中有单独的类别唯一列表,如下所示:

Unique Category
["Physics"]
["Math"]
["Chemistry"]
["Computer"]

最终输出应如下所示:

ID   Category                  Math_F  Physics_F  Computer_F  Chemistry_F
1    ["Physics","Math"]          1         1          0           0
2    ["Math"]                    1         0          0           0
3    ["Math,"Chemistry"]         1         0          0           1
4    ["Physics","Computer"]      0         1          1           0

有人可以帮忙查询、步骤和解释吗?我是蜂巢新手。


Using array_contains():

SELECT ID,
       Category,
       CASE
           WHEN array_contains(Category, 'Math') THEN 1
           ELSE 0
       END Math_F,
       CASE
           WHEN array_contains(Category, 'Physics') THEN 1
           ELSE 0
       END Physics_F,
       CASE
           WHEN array_contains(Category, 'Computer') THEN 1
           ELSE 0
       END Computer_F,
       CASE
           WHEN array_contains(Category, 'Chemistry') THEN 1
           ELSE 0
       END Chemistry_F
FROM TABLE t;

如果您希望使用唯一类别数组动态构建列,请使用其他一些工具来构建查询。 例如,可以使用 shell 脚本来完成。

请参阅此基于预定义数组构建 SQL 的示例。您可以轻松添加从文件中读取的数组:

#!/bin/bash

#define array
array=( Physics Math Computer Chemistry )

#initial sql
sql="select ID,   
       Category,"

#get length of array
arraylength=${#array[@]}

#get first flag column
columns="CASE
  WHEN array_contains(Category,'${array[0]}') THEN 1 
  ELSE 0 
          END ${array[0]}_F"

#attach all other flags:
for (( i=1; i<=$(( $arraylength-1 )); i++ ))
do 
    columns="$columns,
CASE
    WHEN array_contains(Category,'${array[$i]}') THEN 1
    ELSE 0 
 END ${array[$i]}_F"
done

#final SQL
sql="$sql 
$columns
from table t;
"
#print result
 echo "$sql"

Result:

 SELECT ID,
       Category,
       CASE
           WHEN array_contains(Category, 'Physics') THEN 1
           ELSE 0
       END Physics_F,
       CASE
           WHEN array_contains(Category, 'Math') THEN 1
           ELSE 0
       END Math_F,
       CASE
           WHEN array_contains(Category, 'Computer') THEN 1
           ELSE 0
       END Computer_F,
       CASE
           WHEN array_contains(Category, 'Chemistry') THEN 1
           ELSE 0
       END Chemistry_F
FROM TABLE t;

您可以将 Hive 调用添加到上面的脚本中:hive -e "$sql"执行它,或者将其保存到文件中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hive 查询:匹配字符串数组中的列值以制作标志 的相关文章

  • 获取mysql中逗号分隔行中不同值的计数

    一个表 Jobs 有 2 列 JobId 城市 当我们保存工作时 工作位置可能是多个城市 如下所示 JobId City 1 New York 2 New York Ohio Virginia 3 New York Virginia 我如何
  • SQL查询查找具有特定数量关联的行

    使用 Postgres 我有一个架构conversations and conversationUsers Each conversation有很多conversationUsers 我希望能够找到具有确切指定数量的对话conversati
  • postgresql 不同的不工作

    我使用以下代码从数据库获取值 但是当我编写这段代码时 测试看看问题出在哪里 我注意到查询没有从数据库中获取不同的值 这是查询 select distinct ca id as id acc name as accName pIsu name
  • 解析错误:语法错误,意外的 T_RETURN [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 遇到这个问
  • 如何使用Java获取特定模式的所有表及其列?

    我有一个数据库架构 其名称为 Navid 这个模式中有很多表 当然每个表都有一些列 我需要的是一个java类 连接到我的数据库 有一个在所有表上循环的方法 2 1 有一个内部循环来定义表的所有列 制作创建表查询语句 我想在另一个数据库中创建
  • 如何创建 HIVE 表来读取分号分隔值

    我想创建一个 HIVE 表 该表将以分号分隔的值读取 但我的代码不断给出错误 有没有人有什么建议 CREATE TABLE test details Time STRING Vital STRING sID STRING PARTITION
  • SQL:如何从一个表中获取另一个表中每一行的随机行数

    我有两个数据不相关的表 对于表 A 中的每一行 我想要例如表 B 中的 3 个随机行 使用光标这相当容易 但速度非常慢 那么我该如何用单个语句来表达这一点以避免 RBAR 呢 要获得 0 到 N 1 之间的随机数 可以使用 abs chec
  • SQL Server 查询中 UNION ALL 与 OR 条件

    我必须根据表上不存在的条件选择一些行 如果我使用如下的 union all 它会在不到 1 秒的时间内执行 SELECT 1 FROM dummyTable WHERE NOT EXISTS SELECT 1 FROM TABLE t WH
  • Ruby ActiveRecord 和 sql 元组支持

    ActiveRecord 是否支持 where 子句中的元组 假设底层数据库支持 结果 where 子句看起来像这样 where name address in John 123 Main St I tried Person where n
  • 是否可以从子查询中获取多个值?

    有没有办法让子查询在oracle db中返回多列 我知道这个特定的sql会导致错误 但它很好地总结了我想要的 select a x select b y b z from b where b v a v from a 我想要这样的结果 a
  • SQL Server 中离线索引重建和在线索引重建有什么区别?

    重建索引时 有一个选项ONLINE OFF and ONLINE ON 我知道当ONLINE模式打开时 它会复制索引 切换新查询以利用它 然后重建原始索引 使用版本控制跟踪两者的更改 如果我错了 请纠正我 但是 SQL 在离线模式下会做什么
  • 需要在 SQL Server 中透视字符串值

    我有一个包含值的表 描述为 Occupation String Name String Developer A Developer B Designer X Coder Y Coder Z 我需要数据透视格式的值 Designer Deve
  • 如何修复 pgbackups 错误:备份 url 无效?

    我正在尝试按照迁移到 Cedar 的说明进行操作 除了我进行了重大重写 因此这不是前一个应用程序的分支 而是一个单独的分支 并停留在数据库迁移步骤 我安装了 pgbackup 和 heroku postgresql 插件 但得到了这个结果
  • SQL Server 2005 是否有与 MySql 的 ENUM 数据类型等效的数据类型?

    我正在开发一个项目 我想在表中存储一些容易枚举的信息 MySql 的枚举数据类型正是我想要的 http dev mysql com doc refman 5 0 en enum html http dev mysql com doc ref
  • MySQL InnoDB 约束不起作用

    我偶然发现 innoDB 约束的奇怪行为 但找不到原因 我有包含数据的表格 下面列出了它们的结构 CREATE TABLE contents id int 10 unsigned NOT NULL AUTO INCREMENT title
  • 在 plpgsql 函数中使用 quote_ident()

    我是创建 plpgsql 函数的新手 我需要一些有关在函数内部执行的动态命令上使用 quote ident 甚至 quote literal 的说明 希望有人能给我一个关于它们如何在函数内部工作的具体解释 TIA 这是一个例子 EXECUT
  • 从表中选择行,其中另一个表中具有相同 id 的行在另一列中具有特定值

    在 MySQL 中 如果我们有两个表 comments key value 1 foo 2 bar 3 foobar 4 barfoo and meta comment key value 1 1 2 1 3 2 4 1 我想得到来自以下人
  • 如何在 SQL Server 2012 中选择除一列之外的所有列? [复制]

    这个问题在这里已经有答案了 有没有一种方法可以选择所有列 但只选择我不想选择的特定列 我的意思是有时我会遇到这样的问题 表有数百个字段 而我只需要删除一个字段 我需要重写所有列吗 有什么窍门吗 喜欢select
  • Hive:如何分解嵌入 CSV 文件中的 JSON 列?

    从 CSV 文件 带有标题和管道分隔符 中 我得到了以下两个内容 其中包含一个 JSON 列 内部有一个集合 如下所示 第一种情况 使用没有名称的 JSON 集合 ProductId IngestTime ProductOrders 918
  • 如何使用 SQL 查询创建逗号分隔的列表?

    我有 3 个表 名为 应用程序 ID 名称 资源 id 名称 应用程序资源 id app id resource id 我想在 GUI 上显示所有资源名称的表格 在每一行的一个单元格中 我想列出该资源的所有应用程序 以逗号分隔 所以问题是

随机推荐

  • 有没有办法在多台计算机上同步 Sublime Text 设置?

    我有两台电脑 一台台式机和一台笔记本电脑 现在我已经将 ENV 设置为借助 Dropbox 链接进行同步 有没有办法在这两台计算机之间同步我的 Sublime Text 3 设置 包括我的所有插件 首选项文件等 如果是这样 我该如何设置才能
  • 将streambuf的内容复制到字符串

    显然boost asio async read不喜欢字符串 因为它是唯一的重载boost asio buffer让我能够创造const buffers 所以我不得不将所有内容读入流缓冲区 现在我想将streambuf的内容复制到一个字符串中
  • 带有简单 Web 包装器的 python tkinter

    我正在编写一个带有 UI 的简单 python 程序 但我不知道如何将网页放入程序中 我尝试在 Google 上搜索 但找不到任何简单的实现 任何链接都会很棒 回顾一下 我只想要一个简单的 GUI python 程序 其中嵌入了一个网页 基
  • 用户单击 ajax 调用后,打开新选项卡而不使用弹出窗口阻止程序

    我有一个页面 使用户能够通过 HTML5 画布执行图像操作 在该页面上 有一个 facebook 共享按钮 用于在 facebook 上共享画布的生成图像 单击链接时 将向服务器 ASP NET MVC 发送一个ajax请求以执行图像生成
  • 在 javascript 中注入 PHP 的转义字符的正确组合?

    我已经尝试了所有我知道的组合 但无法得到正确的结果 echo lt lt
  • C 中 ptrdiff_t 在哪里定义?

    哪里ptrdiff t在C中定义 它定义在stddef h 该标头定义了整数类型size t ptrdiff t and wchar t 函数宏offsetof 以及常数宏NULL
  • 使用 artisan migrate 时出现流明错误

    我是 Lumen 新手 当我尝试使用时 php artisan migrate 我收到以下错误 PDOException SQLSTATE HY000 2002 No such file or directory 如果我将 localhos
  • 如何在C++中计算文件的行数?

    如何使用标准类来计算行数 fstream and ifstream 这个怎么样 std ifstream inFile file std count std istreambuf iterator
  • 续集查询的可选参数

    早上好 我对 NodeJS sequelize 世界相当陌生 目前在尝试在屏幕上显示仪表板时遇到问题 该仪表板具有三个过滤器 两个日期 期间 客户姓名和员工姓名 用户可以选择无 一个 两个或所有过滤器 我的数据库需要相应地工作 话虽这么说
  • 在 CSS 中创建具有可滚动内容的可变高度“固定”标题

    我想在页面上创建一个标题 当您滚动页面时该标题不会移动 这看起来很简单 只需将 position fixed 添加到样式中 但内容就会出现在标题下方 因为标题 从流中删除 所以我认为的解决方案是在内容中添加 margin top heigh
  • 在Python中取消引用列表内的列表

    当我以 通用 方式定义列表时 gt gt gt a 3 gt gt gt a 然后尝试仅附加到外部列表的第二个元素 gt gt gt a 1 append 0 1 gt gt gt a 0 1 0 1 0 1 如上所示 它附加到外部列表的所
  • 鼠标移开时保持子菜单打开

    我正在开发的导航菜单具有默认的 CSS 行为 对于那些禁用 JavaScript 的极少数人 默认情况下 不显示子菜单 main navigation ul ul display none 将鼠标悬停时 会显示子菜单 main naviga
  • 如何在 UITests 中访问“tableViewCell”中的“detailTextLabel”?

    我想检查是否有tableViewCell detailTextLabel在我的 UITest 中使用给定的字符串 问题是当我搜索时app tables cells children matching staticText 它只会寻找那些标签
  • 函数 nil.id/0 未定义或私有 - Elixir

    我正在尝试使用监护人身份验证来测试用户 ID 是否等于资源 ID 如果没有当前令牌 并且我尝试访问正在检查令牌的网址 则会收到此错误function nil id 0 is undefined or private 我来自红宝石背景 我不知
  • 语法高亮在 Jekyll 的 MD 文件中不起作用?

    使用 kramdown 解析器和 rouge gem 时 语法荧光笔似乎无法在 Jekyll 中工作 引号也不会突出显示和格式化 标记文件 javascript function order words var array words sp
  • 检查变量类型以进行代码分析

    在 Roslyn 代码分析器中检查变量类型的正确方法是什么 我正在注册一个ObjectCreationExpressionSyntax节点和我可以获取类型 但我不确定检查它是否是我关心的类型的正确方法 我找到了一种通过检查显示字符串来做到这
  • 在“onEnter”挂钩中获取状态名称

    我正在构建一个应用程序 我想在用户进入和离开路线时切换服务中的属性 为此 我需要知道该州的名称onEnter and onExit钩子 这对于onExit钩子 因为我可以注入 state服务并读取当前状态的名称 但由于当前状态尚未设置 当o
  • 从 Google Drive 导出 docx 并转换为 base64

    我正在尝试从 Google 云端硬盘导出 DOCX 文件 gapi client drive files export fileId id alt media mimeType mimeType then response gt var f
  • 在 iOS 7 中预加载数据库

    过去 我发布了带有预加载数据库的应用程序 因此用户无需在第一次运行时更新它 我在另一个问题中找到了一些代码 抱歉 不再有链接 我将其添加到我的应用程序代理中persistentStoreCoordinator method NSPersis
  • Hive 查询:匹配字符串数组中的列值以制作标志

    我有一些记录 其中每一行都属于某些类别 数据类型 字符串数组 和一个单独的唯一类别列表 数据类型 字符串 我需要将每一行与唯一的列表相匹配并为其创建标志 Input ID Category 1 Physics Math 2 Math 3 M