有人可以解释 arrayJoin() 函数在 Clickhouse 数据库中如何工作吗?

2023-12-19

我是 ClickHouse DB 的新手,文档中提供的示例无助于正确理解这个概念。解释如何数组连接() https://clickhouse.tech/docs/en/query_language/functions/array_join/可以与简单的场景一起使用将不胜感激。


让我们考虑以下场景:

  1. 当需要转型时Array to a relation(行集)
/* get error */
SELECT 1
WHERE 1 IN ([1, 2]);

/* ok */
SELECT 1
WHERE 1 IN (SELECT arrayJoin([1, 2]));
/* get error */
SELECT *
FROM (SELECT [1, 2] a)
WHERE a = 2;

/* ok */
SELECT *
FROM (SELECT arrayJoin([1, 2]) a)
WHERE a = 2;
  1. 展开/展平行
SELECT
    metric_id,
    metric_name,
    arrayJoin(metric_values) AS metric_value
FROM
( /* test data */
    SELECT
        1 AS metric_id,
        'name_1' AS metric_name,
        [1, 4, 55] AS metric_values
    UNION ALL
    SELECT
        2 AS metric_id,
        'name_2' AS metric_name,
        [-7, 11] AS metric_values
)
/* result
┌─metric_id─┬─metric_name─┬─metric_value─┐
│         1 │ name_1      │            1 │
│         1 │ name_1      │            4 │
│         1 │ name_1      │           55 │
│         2 │ name_2      │           -7 │
│         2 │ name_2      │           11 │
└───────────┴─────────────┴──────────────┘
*/
/* produce Cartesian product */
SELECT
    arrayJoin([1, 2]) AS n,
    arrayJoin(['a', 'b']) AS ll,
    arrayJoin(['A', 'B']) AS ul
/* result
┌─n─┬─ll─┬─ul─┐
│ 1 │ a  │ A  │
│ 1 │ a  │ B  │
│ 1 │ b  │ A  │
│ 1 │ b  │ B  │
│ 2 │ a  │ A  │
│ 2 │ a  │ B  │
│ 2 │ b  │ A  │
│ 2 │ b  │ B  │
└───┴────┴────┘
*/
/* flatten the multidimension array */
SELECT arrayJoin(arrayJoin([[1, 2], [3, 4]])) AS d
/* result
┌─d─┐
│ 1 │
│ 2 │
│ 3 │
│ 4 │
└───┘
*/

当您需要逐项链接数组而不是获取笛卡尔积时,请考虑使用数组连接 https://clickhouse.tech/docs/en/sql-reference/statements/select/array-join/:

/* cartesian product */

SELECT
    arrayJoin(arr1),
    arrayJoin(arr2)
FROM
(
    SELECT
        [1, 2] AS arr1,
        [11, 22] AS arr2
)

/*
┌─arrayJoin(arr1)─┬─arrayJoin(arr2)─┐
│               1 │              11 │
│               1 │              22 │
│               2 │              11 │
│               2 │              22 │
└─────────────────┴─────────────────┘
*/


/* connect array's item one by one */

SELECT a1, a2, arr1, arr2
FROM
(
    SELECT
        [1, 2] AS arr1,
        [11, 22] AS arr2
)
ARRAY JOIN arr1 as a1, arr2 as a2

/*
┌─a1─┬─a2─┬─arr1──┬─arr2────┐
│  1 │ 11 │ [1,2] │ [11,22] │
│  2 │ 22 │ [1,2] │ [11,22] │
└────┴────┴───────┴─────────┘
*/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有人可以解释 arrayJoin() 函数在 Clickhouse 数据库中如何工作吗? 的相关文章

  • 如何在asp.net中按下按钮后刷新Gridview

    我正在尝试制作一个简单的图书馆数据库 我在网格视图中列出搜索结果 然后有一个文本框和一个按钮 用户输入 isbn 并单击贷款按钮 然后 如果有足够数量的物品 itemNumber gt 0 则由用户借出 这是用户界面的屏幕截图 我的问题是
  • DBMS 中的阻塞因素

    DBMS 中的阻塞因素是什么 我查看的位表示它是每个记录的块的下限值 因此 B R 下限 其中 B 是块大小 R 是记录 我只是想知道 有人可以告诉我它使用的主要原因 以及它是否真的是地板 我对 FLOORED 的理解是 1 5 降到 1
  • 如何将图数据结构持久化到关系数据库中?

    我考虑过创建一个顶点表和一个边表 但是在内存中构建图和遍历子图是否需要大量查找 我想避免过多的数据库读取 还有其他方法可以保存图表吗 旁注 我听说过 Neo4j 但我的问题实际上是如何在概念上表示标准数据库中的图形 不过 我对一些 NoSQ
  • Slick 中的 Scala 枚举(案例对象),良好实践

    假设我有一个代表一组几个有效状态的特征 将对象存储在数据库中是一个好习惯吗 存储 Int 并使用隐式函数 MappedColumnType base Int DoorState 将它们映射到 DoorState 会更好吗 trait Doo
  • 在准备另一个Statement之前是否有必要关闭PreparedStatement

    是否有必要在一个db getConnection 中关闭ResultSet和PreparedStatement 对于下面的例子 Connection conn db getConnection PreparedStatement pstmt
  • 有什么方法可以在MySQL中的表名位置使用变量吗?

    我想在表名称位置使用变量 例如 SELECT FROM targetTableName 然而它会出错 有什么方法可以在MySQL中的表名位置使用变量吗 您显示的查询不起作用有两个原因 插入到查询中的用户定义变量将被视为使用字符串文字 而不是
  • 用于桌面数据库应用程序的 Python 框架

    是否有一个框架可以为Python开发桌面数据库应用程序 一些带有CRUD屏幕的屏幕 我正在寻找类似于 Windows 窗体的东西 能够将 TextField Combos 和其他 UI 隐喻与datasets连接到关系数据库例如 MySQL
  • 如何使用索引更改表的列?

    我想将带有某些索引的表中 a 列的列大小从 varchar 200 更改为 varchar 8000 我应该如何进行 既然是VARCHAR你正在增加尺寸 然后简单地ALTER TABLE ALTER COLUMN https learn m
  • 存储和检索多个头像图像尺寸

    我正在建立一个论坛类型的网站 用户将有一个头像 主页将有一个小版本的头像 而单页面将有一个大版本的头像 因此 为了带宽的考虑 我将采用不同的大小 example png example thumb png 不同尺寸的首选存储和检索方法是什么
  • 使用 System.out.println 显示特殊字符

    我在将带有特殊字符的文本从网络服务发送或显示到数据库时遇到问题 在我的 Eclipse 上 我已将字符编码设置为 UTF 8 但它仍然不允许我显示字符 例如 像下面的代码一样简单的打印 String test System out prin
  • 子查询在多项选择时返回超过 1 个值的 SQL 错误

    我想要一个临时表 它将使用 select 语句插入值 但每次我运行查询时 总是出现错误 子查询返回超过 1 个值 当查询跟随 gt 或子查询用作表达式时 不允许这样做 该语句已终止 0 行受影响 这很奇怪 因为代码中似乎没有错误 但如果有的
  • 分区表查询仍然扫描所有分区

    我有一个包含超过十亿条记录的表 为了提高性能 我将其分区为30个分区 最常见的查询有 id 在他们的 where 子句中 所以我决定对表进行分区id column 基本上 分区是这样创建的 CREATE TABLE foo 0 CHECK
  • 如何使用Python的Mysqldb模块?而不是 %s 作为查询参数?

    MySqlDb 是一个很棒的 Python 模块 但有一个部分非常烦人 查询参数如下所示 cursor execute select from Books where isbn s isbn 而已知宇宙中的其他地方 oracle sqlse
  • Doctrine 在 Active Record 之上添加了什么 - CodeIgniter?

    我真的很喜欢 CodeIgniter Active Record 它非常好地允许我进行所有需要的数据库查询 但我也一直在阅读有关 ORM 的内容 例如 Doctrine 当我阅读 Doctrine 的文档时 它的使用似乎不像 Active
  • Firebase 查询 - 查找包含字符串的子项

    我在使用 Firebase 查询时遇到了一些问题 我想查询对象 其中对象子值包含特定字符串 到目前为止 我有一些看起来像这样的东西 Firebase ref Firebase alloc initWithUrl https dinosaur
  • 如何使用 php 命令使注册表单高度安全?

    我想让代码对用户来说真正安全 下面的代码显示了 php 代码 我已将其用于我的网站 现在我已经使用了一些验证 例如密码和重复密码必须匹配 并且用户必须输入所有字段 为了使其更安全 我想插入安全命令 例如 PDO mysqli crypto
  • 检索使用 Uniqueidentifier 插入的最后一行,它不是 IDENTITY

    我对一个查询感到困惑 我需要找出表中添加的最后一行 其中有一列数据类型为 Uniqueidentifier 列是 aspnet Applications ApplicationId 注意 该列是Uniqueidentifier 它不是IDE
  • Access 2007 数据库和应用程序的版本控制

    我需要对 Microsoft Access 2007 数据库和应用程序进行版本控制 目前 所有内容都包含在单个 mdb 文件中 该应用程序包括 Forms VBA code 实际数据库 我假设我需要将数据库与表单 代码分开 我希望能够将表单
  • Java - 如何批量插入和更新数据库

    我想在一个PreparedStatement 中批量处理多种类型的数据库调用 这可能吗 有没有办法做类似的事情 PreparedStatement pstmt connection prepareStatement 哪里的 可以是INSER
  • SQLite 性能基准 - 为什么 :memory: 这么慢...只有磁盘速度的 1.5 倍?

    为什么 sqlite 中的 memory 这么慢 我一直在尝试查看使用内存中的 sqlite 与基于磁盘的 sqlite 是否可以获得任何性能改进 基本上我想用启动时间和内存来换取非常快速的查询not在应用程序过程中击中磁盘 然而 以下基准

随机推荐

  • iOS开发:收到Game Center邀请时,如何获取GKMatch对象?

    我正在构建一款使用 Game Center 的 iPhone 游戏 但我很难理解如何开始一场通过收到朋友的玩邀请而开始的比赛游戏 这docs http developer apple com library ios documentatio
  • 根据给定值构造新的哈希值

    我似乎迷失了尝试实现以下目标 我尝试了一整天 请帮助 I HAVE h kv1001 gt impressions gt b gt 0 245 a gt 0 754 visitors gt b gt 0 288 a gt 0 711 ctr
  • 如何设置java keytool的默认语言?

    我使用带有英语和美式键盘设置的 Windows 操作系统 我使用这个命令来生成密钥库 效果很好 C java6 jre bin keytool genkey keyalg RSA alias mykey validity 3652 keys
  • 如何使用钩子通过一个事件处理函数动态更新任何输入字段的值

    TL DR 有没有一种方法可以通过一个事件动态更新输入字段的值 处理函数就像我们对有状态组件所做的那样 我正在制作一个包含 2 个字段的登录表单 电子邮件和密码 当我使用 2 个 useState 代表两个字段时 当我使用 handleCh
  • R过滤掉一个子集

    我有一个数据框A 和一个包含 A 子集的 data frame B 如何创建一个 data frame C 它是 data frame A 且排除了 data frame B 感谢您的帮助 获取 A 中 B 中没有的行 C A data f
  • 如何在 Eclipse 中从自动构建中排除一个项目?

    如何在 Eclipse 中从自动构建中排除一个项目 我的工作区中有一个项目 该项目可能构建很长 即使没有任何更改 我想保持这个项目打开以浏览源代码 但我不需要它一直在构建 如何禁用该项目的自动构建 这可能是 Eclipse 中的一个错误ht
  • 引发“System.Windows.Forms.AxHost+InvalidActiveXStateException”类型的异常

    我在我的简单项目中遇到错误 这是我的代码 if axZKFPEngX1 InitEngine 0 label1 Text Connected else label1 Text Connection Failed 我已经添加了参考复合材料Ax
  • 从实体框架中删除单个记录?

    我在实体框架中有一个名为的 SQL Server 表employ具有名为的单个键列ID 如何使用实体框架从表中删除单个记录 不必先查询对象 您可以通过其 id 将其附加到上下文 像这样 var employer new Employ Id
  • 如何提取Go内置函数代码,例如delete()

    我在go src go src builtin builtin go 中找到了内置函数 如下 func delete m map Type Type1 key Type 但这不是源代码 谁能告诉我内置函数的源代码在哪里 builtin go
  • 运行 npm 命令时 -- 做什么?

    例如 双破折号或两个连字符 像这样使用 npm test coverage Running npm没有双破折号标志不会在覆盖模式下运行 因此它似乎附加了后续标志 这是正确的吗 我找不到这方面的文档 作为参数本身在所有 UNIX 命令中都是标
  • const 用于非引用参数

    如果我有这个代码 void Foo aBasicType aIn Where aBasicType is int char etc 制作它有什么意义吗const aBasicType因为无论如何它都会被复制 我问的原因之一是因为我在第 3
  • 如何在 Javascript 中正确使用 mixin

    我正在组织一个小型企业应用程序 但希望尽可能干燥 因此 我一直在研究 mixin 库 我遇到了这个library https github com kmalakoff mixin并认为这可能是一个不错的选择 因为它允许您在运行时混合输入和输
  • 如何通过 SQLAlchemy 中的自定义函数进行排序

    所以我有一个 SQLALchemy 模型 如下所示 from sqlalchemy import create engine Column BigInteger String DateTime from sqlalchemy ext dec
  • Gitlab克隆项目:身份验证失败

    我尝试简单地使用 HTTPS 和 SSH 克隆 Gitlab 项目 但它们都不起作用并打印回验证失败的消息 尝试使用 https 地址时 git clone https gitlab com project aa project git C
  • 如何删除 C# WPF 应用程序中的 WebView2 UserDataFolder,BrowserProcessExited 事件不会触发

    我的 C 应用程序使用 WebView2 要求多个实例同时打开 且不共享会话 根据这个WebView2流程 模型解释 https learn microsoft com en us microsoft edge webview2 conce
  • 使用 AWS ELB 连接节点服务器时 Websocket 在闲置 60 秒后关闭

    我有一个节点服务器在 EC2 实例上运行 客户端也在同一个 EC2 实例上运行 客户端打开 websocket 连接来与节点服务器通信 它正在 QA 和 Dev AWS 环境中工作 但相同的 Web 连接在空闲 60 秒后逐渐关闭在 pro
  • 谷歌sheet_query

    我正在尝试使用查询创建动态工作表 ARRAYFORMULA query 1 text Temp A1 A13 MM YYYY Temp B2 E13 select Col1 sum Col5 where Col1 gt C2 AND Col
  • 为什么归档时找不到静态库的头文件?

    我可以很好地进行调试 我已经三次检查静态库是否包含在项目的构建阶段设置中 我还尝试了其他方法 例如标头包含路径等 但均无济于事 当我尝试构建 IPA 进行试飞时 出现错误 import
  • 将视频显示到 JPanel

    我正在创建一个简单的视频播放器 但在 JPanel 中显示要流式传输的视频文件时遇到问题 我创建并设计了一个 JFrame 并将一个正方形大小的 JPanel 放入表单内 到目前为止 这是我的代码 package SoundsTrip im
  • 有人可以解释 arrayJoin() 函数在 Clickhouse 数据库中如何工作吗?

    我是 ClickHouse DB 的新手 文档中提供的示例无助于正确理解这个概念 解释如何数组连接 https clickhouse tech docs en query language functions array join 可以与简