<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 高階函數 高階函數、`->`運算符和 lambda(params, expr) 函數 [https://clickhouse.tech/docs/en/sql-reference/functions/](https://clickhouse.tech/docs/en/sql-reference/functions/) 高階函數只能接受 lambda 函數作為它們的函數參數。要將 lambda 函數傳遞給高階函數,請使用`->`運算符。箭頭左側有一個形參,它是任意 ID,或多個形參——元組中的任意 ID。箭頭右側有一個表達式,可以使用這些形式參數,以及任何表格列。 例子: ~~~ x -> 2 * x str -> str != Referer ~~~ 接受多個參數的 lambda 函數也可以傳遞給高階函數。在這種情況下,高階函數會傳遞幾個長度相同的數組,這些數組將對應于這些參數。 對于某些函數,可以省略第一個參數(lambda 函數)。在這種情況下,假定映射相同。 ## 數組函數 文檔:[https://clickhouse.tech/docs/en/sql-reference/functions/array-functions/](https://clickhouse.tech/docs/en/sql-reference/functions/array-functions/) * arrayConcat ![](https://img.kancloud.cn/a9/04/a904d1731829d4685f21210fddbbe257_527x159.png) * arrayElement(arr,n) ![](https://img.kancloud.cn/1f/5c/1f5c3ea432ae89a68985d60547de98a8_467x189.png) * has(arr,elem) 檢查’arr’數組是否具有’elem’元素。 如果元素不在數組中,則返回0;如果在,則返回1。 ![](https://img.kancloud.cn/b3/69/b36967040ce1ecf5d13fd761b91c6891_512x192.png) * indexOf(arr, x) 如果它在數組中,則返回第一個 'x' 元素的索引(從 1 開始),否則返回 0。 ![](https://img.kancloud.cn/dd/e9/dde9748b5ebad516083ca19ca68e3efa_512x187.png) * arrayCount(高階函數) 返回 arr 數組中 func 返回非 0 的元素數。如果未指定 'func',則返回數組中非零元素的數量。 ![](https://img.kancloud.cn/72/fe/72fece7b8c4e541733032b4e3c386812_567x375.png) * countEqual(arr, x) 返回數組中等于 x 的元素數。 ![](https://img.kancloud.cn/8c/bb/8cbbc666a25d0f9c16ff5d16776f8e81_516x185.png) * arrayEnumerateUniq(arr, ...) 返回一個與源數組大小相同的數組,指示每個元素在具有相同值的元素中的次數 此函數在使用 ARRAY JOIN 和數組元素聚合時很有用。 ![](https://img.kancloud.cn/e2/7e/e27e0778cf136f1e19fcfdf1f2be9173_640x193.png) * arrayPopBack 從數組中刪除最后一項 ![](https://img.kancloud.cn/91/c6/91c6788e3108c1fa0f159fc178873b6a_637x185.png) * arrayDistinct 數組去重 ![](https://img.kancloud.cn/27/52/2752bd487c4d8bb6a054aa0a869cb118_568x192.png) * arrayFilter(func, arr1, …)(高階函數) 返回func過濾的元素 ![](https://img.kancloud.cn/9b/49/9b4949749819703b4aaf155d1d4f5295_701x189.png) * arrayMap(func, arr1, ...)(高階函數) 返回從`func`函數的原始應用中獲得的數組到`arr`數組中的每個元素。 ![](https://img.kancloud.cn/7c/a3/7ca33cd13a4f78a0595134d3bf05703f_523x187.png) * arrayJoin(arr) ![](https://img.kancloud.cn/62/08/6208260e0c84cb09f91c5b6041bbf93d_644x299.png) ## 類型轉換 文檔:[https://clickhouse.tech/docs/en/sql-reference/functions/type-conversion-functions/](https://clickhouse.tech/docs/en/sql-reference/functions/type-conversion-functions/) * toInt(8|16|32|64|128|256) 將輸入值轉換為數據類型。 ~~~ SELECT toInt64(nan), toInt32(32), toInt16('16'), toInt8(8.8); ~~~ * toInt(8|16|32|64|128|256)OrZero 失敗返回0 ~~~ SELECT toInt64OrZero('123123'), toInt8OrZero('123qwe123'); ~~~ * toInt(8|16|32|64|128|256)OrNull 失敗返回null ~~~ SELECT toInt64OrNull('123123'), toInt8OrNull('123qwe123'); ~~~ * toString 轉換為字符串或從字符串轉換時,來格式化或解析值。 * CAST(x, T) 將’x’轉換為’t’數據類型。還支持語法CAST(x AS t) ## 字符串函數 文檔:[https://clickhouse.tech/docs/en/sql-reference/functions/string-functions/](https://clickhouse.tech/docs/en/sql-reference/functions/string-functions/) * empty * notEmpty * length * splitByChar 返回拆分后的子串的數組。 如果分隔符出現在字符串的開頭或結尾,或者如果有多個連續的分隔符,則將在對應位置填充空的子串。 ![](https://img.kancloud.cn/64/42/644225f29e6d992374a26bcbf844a543_521x193.png) * splitByString(separator, s) 與上面相同,但它使用多個字符的字符串作為分隔符。 該字符串必須為非空。 ![](https://img.kancloud.cn/8f/56/8f5603f87d991d4c58ff1f7c47baffe1_559x215.png) ## json函數 文檔:[https://clickhouse.tech/docs/en/sql-reference/functions/json-functions/](https://clickhouse.tech/docs/en/sql-reference/functions/json-functions/) * visitParamHas(params, name) ![](https://img.kancloud.cn/1b/78/1b784d895d1dc3434a939806db39a308_499x197.png) * visitParamExtractRaw(params, name) 返回字段的值,包括分隔符。 ![](https://img.kancloud.cn/84/c1/84c1a9523cb2bb206ec5e4a3d5fbddf8_559x182.png) 解析雙引號中的字符串,這個值沒有進行轉義。如果轉義失敗,則返回一個空字符串。 * visitParamExtractString(params, name) 解析 JSON 并提取字符串。這個函數類似于`visitParamExtractString`函數。 ![](https://img.kancloud.cn/3b/aa/3baab4c9bba50da383f182035aa96b0c_583x202.png) * JSONHas(json\[, indices\_or\_keys\]…) 如果JSON中存在該值,則返回`1`。 如果該值不存在,則返回`0`。 ![](https://img.kancloud.cn/88/4a/884a2cb6ba76bcf1ff13545aade988b0_646x188.png) * JSONExtract(json\[, indices\_or\_keys…\], Return\_type) 解析 JSON 并提取給定 ClickHouse 數據類型的值。 ~~~ SELECT JSONExtract ('{"a": "hello", "b": [-100, 200.0, 300],"c":1}', 'c', 'Int64') AS value ~~~ ![](https://img.kancloud.cn/1c/0d/1c0d3b268312d8048c704d3d8376371e_815x205.png) ~~~ -- 創建表 create table tb_json(cont String) engine=Memory; -- 插入數據 insert into tb_json values ('{"movie":"1207","rate":"4","timeStamp":"978300719","uid":"1"}'),('{"movie":"2028","rate":"5","timeStamp":"978301619","uid":"1"}') ,('{"movie":"531","rate":"4","timeStamp":"978302149","uid":"1"}'),('{"movie":"3114","rate":"4","timeStamp":"978302174","uid":"1"}'),('{"movie":"608","rate":"4","timeStamp":"978301398","uid":"1"}'); SELECT cast(JSONExtract(cont, 'Tuple(String, String)').2,'Float64') from tb_json ~~~ ![](https://img.kancloud.cn/c7/e0/c7e089cd0fb597362671f6ef009ee7aa_676x265.png) * JSONExtractKeysAndValues(json\[,indices\_or\_keys…\],Value\_type) 從 JSON 解析鍵值對,其中值是給定的 ClickHouse 數據類型。 ~~~ SELECT JSONExtractKeysAndValues('{"x": {"a": 5, "b": 7, "c": 11}}', 'x', 'Int8') = [('a',5),('b',7),('c',11)]; ~~~ ![](https://img.kancloud.cn/e7/fc/e7fceb4224c7c9f0ab8ef2d864c019c1_812x468.png) ## 漏斗模型鏈路函數 案例: 漏斗模型:分析用戶行為 ![](https://img.kancloud.cn/1b/5c/1b5ce3e8ae34a60984d386e257542df1_1080x628.png) 此類場景clickhouse提供了一個名叫windowFunnel的函數來實現 ~~~SQL -- 創建一張用戶行為表,至少包含時間、事件、用戶id CREATE TABLE test.action ( `uid` Int32, `event_type` String, `time` datetime ) ENGINE = MergeTree() PARTITION BY uid ORDER BY xxHash32(uid) SAMPLE BY xxHash32(uid) SETTINGS index_granularity = 8192 -- 插入數據 insert into action values(1,'瀏覽','2020-01-02 11:00:00'); insert into action values(1,'點擊','2020-01-02 11:10:00'); insert into action values(1,'下單','2020-01-02 11:20:00'); insert into action values(1,'支付','2020-01-02 11:30:00'); insert into action values(2,'下單','2020-01-02 11:00:00'); insert into action values(2,'支付','2020-01-02 11:10:00'); insert into action values(1,'瀏覽','2020-01-02 11:00:00'); insert into action values(3,'瀏覽','2020-01-02 11:20:00'); insert into action values(3,'點擊','2020-01-02 12:00:00'); insert into action values(4,'瀏覽','2020-01-02 11:50:00'); insert into action values(4,'點擊','2020-01-02 12:00:00'); insert into action values(5,'瀏覽','2020-01-02 11:50:00'); insert into action values(5,'點擊','2020-01-02 12:00:00'); insert into action values(5,'下單','2020-01-02 11:10:00'); insert into action values(6,'瀏覽','2020-01-02 11:50:00'); insert into action values(6,'點擊','2020-01-02 12:00:00'); insert into action values(6,'下單','2020-01-02 12:10:00'); ~~~ 以30分鐘作為一個時間窗口,返回滿足在指定滑動窗口內的連續觸發條件的最大值。 ~~~SQL SELECT user_id, windowFunnel(1800)(time, event_type = '瀏覽', event_type = '點擊', event_type = '下單', event_type = '支付') AS level FROM ( SELECT time, event_type, uid AS user_id FROM action ) GROUP BY user_id ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看