zoukankan      html  css  js  c++  java
  • Clickhouse中transform相当于when case then

    transform是将一列中的特定的值,转换成另一个值;
    有两种使用方式:
    1. transform(x, array_from, array_to, default)
    x 要转换的值。
    array_from 用于转换的常量数组。
    array_to ’from’中的值转换为的常量数组。
    default 如果’x’不等于’from’中的任何值,则默认转换的值。
    array_from array_to 拥有相同大小的数组。
    类型约束:
    transform(T, Array(T), Array(U), U) -> U
    TU可以是StringDateDateTime或任意数值类型的。
    对于相同的字母(TU),如果数值类型,那么它们不可不完全匹配的,只需要具备共同的类型即可。
    例如,第一个参数是Int64类型,第二个参数是Array(UInt16)类型。
    如果’x’值等于’array_from’数组中的一个元素,它将从’array_to’数组返回一个对应的元素(下标相同)。否则,它返
    ’default’。如果’array_from’匹配到了多个元素,则返回第一个匹配的元素

    SELECT
    transform(SearchEngineID, [2, 3], ['Yandex', 'Google'], 'Other') AS title,
    count() AS c
    FROM test.hits
    WHERE SearchEngineID != 0
    GROUP BY title
    ORDER BY c DESC
    ┌─title─────┬──────c─┐
    │ Yandex │ 498635 │
    │ Google │ 229872 │
    │ Other │ 104472 │
    └───────────┴────────┘

    1.transform(x,array_from
    , array_to)
    与第一种不同在于省略了’default’参数。
    如果’x’值等于’array_from’数组中的一个元素,它将从’array_to’数组返回相应的元素(下标相同)。 否则,它返回’x’
    类型约束:
    transform(T, Array(T), Array(T)) -> T

    SELECT
    transform(domain(Referer), ['yandex.ru', 'google.ru', 'vk.com'], ['www.yandex', 'example.com']) AS s,
    count() AS c
    FROM test.hits
    GROUP BY domain(Referer)
    ORDER BY count() DESC
    LIMIT 10
    ┌─s──────────────┬───────c─┐
    │ │ 2906259 │
    │ www.yandex │ 867767 │
    │ ███████.ru │ 313599 │
    │ mail.yandex.ru │ 107147 │
    │ ██████.ru │ 100355 │
    │ █████████.ru │ 65040 │
    │ news.yandex.ru │ 64515 │
    │ ██████.net │ 59141 │
    │ example.com │ 57316 │
    └────────────────┴─────────┘
  • 相关阅读:
    MHA
    主从复制
    模拟数据误删除并恢复
    mysql日志类型和备份mysqldump2
    springcloud-Hystrix图形化Dashboard搭建
    springcloud-Hystrix工作流程
    springcloud-Hystrix-服务熔断使用
    springcloud-Hystrix-服务熔断理论
    springcloud-Hystrix-降级fallback完善
    springcloud-Hystrix-降级fallback
  • 原文地址:https://www.cnblogs.com/becoding/p/13424257.html
Copyright © 2011-2022 走看看