也许我错过了一些简单的事情,但我无法让时间过滤工作。
这是我的示例查询:
select toTimeZone(ts, 'Etc/GMT+2') as z
from (select toDateTime('2019-08-31 20:35:00') AS ts)
where z > '2019-08-31 20:34:00'
Run Code Online (Sandbox Code Playgroud)
我期望 0 结果,但得到:
2019-08-31T18:35:00+00:00
Run Code Online (Sandbox Code Playgroud)
这是一个错误,还是我滥用了 toTimeZone() 函数?
谢谢!
我看到 clickhouse 为每个分区键创建了多个目录。
文档说目录名称格式是:分区名称,最小数据块数,最大数据块数和块级别。例如,目录名称是201901_1_11_1
.
我认为这意味着该目录是属于分区201901的一部分,具有从1到11的块并且在级别1。所以我们可以有另一个部分,其目录类似于201901_12_21_1
,这意味着这部分属于分区201901,具有从12到21的块并且在级别1。
所以我认为分区被分成不同的部分。我对吗?
我是 Clickhouse 的新手,正在尝试入门。我已经安装了能够在我的计算机(ubuntu 16.04)上使用它所需的所有软件包,但是当我使用 clickhouse-client 命令时,我得到以下信息:
ClickHouse client version 20.3.4.10 (official build).
Connecting to localhost:9000 as user default.
Code: 516. DB::Exception: Received from localhost:9000. DB::Exception: default: Authentication failed: password is incorrect or there is no user with such name.
Run Code Online (Sandbox Code Playgroud)
有谁知道我应该做什么?
我知道clickhouse提供了replaceRegexpOne()函数,但我想使用正则表达式来查询,而不是替换。像MySQL一样:
select username
from table
where username REGEXP '^[0-9]*$'.
Run Code Online (Sandbox Code Playgroud)
希望你能帮助我,谢谢。
我在 ClickHouse 表中有一些原始 JSON 数据(实际上是来自 netflow 收集器的 netflow V9),它看起来像这样:
{"AgentID":"10.1.8.1",
"Header":{"Version":9,"Count":2},
"DataSets":[
[{"I":2,"V":"231"},{"I":3,"V":"151"},{"I":8,"V":"109.195.122.130"}],
[{"I":2,"V":"341"},{"I":3,"V":"221"},{"I":8,"V":"109.195.122.233"}]
]}'
Run Code Online (Sandbox Code Playgroud)
我的任务是通过以下方式将 DataSets 数组转换为另一个 ClickHouse 表:
I2 I3 I8
-----------------------------
231 151 109.195.122.130
341 221 109.195.122.233
...
Run Code Online (Sandbox Code Playgroud) ClickHouse 有一些选项的标志。例如,allow_experimental_live_view可以设置为 1:
:) SET allow_experimental_live_view = 1
Run Code Online (Sandbox Code Playgroud)
但是没有办法GET
获取标志的值,例如GET allow_experimental_live_view
.
有什么方法可以获取flag的值吗?
我对何时使用二级索引有点困惑。我有以下代码脚本来定义 MergeTree 表,该表有十亿行。
create table t_mt(
id UInt8,
name String,
job String,
birthday Date,
salary UINT8
) engine = MergeTable
primary key id
order by (id)
Run Code Online (Sandbox Code Playgroud)
我将实时运行以下聚合查询:
select job, count(1), avg(salary)
from t_mt
group by job
where salary > 20000
Run Code Online (Sandbox Code Playgroud)
在上面的查询中,我使用了条件过滤器:salary > 20000
和分组依据job
。我想问在列上定义二级索引是否是一个好习惯salary
。
我在这里要问的基本问题是我是否可以将Clickhouse二级索引视为MySQL普通索引。也就是说,如果我想按某个列进行过滤,那么我可以在此列上创建(辅助)索引以加快查询速度。
我需要在 ClickHouse 中重新加载最后一天的数据。我的想法是使用 ALTER TABLE DELETE 语句删除最后一天的行,然后插入更新的行。
我已经在文档中找到:“突变也可以通过 INSERT INTO 查询进行部分排序:在提交突变之前插入表中的数据将发生突变,而之后插入的数据将不会发生突变。” 但我不明白这句话。那么我应该等待异步删除过程结束后再开始插入,还是立即开始插入可以吗?知道有复制和没有复制两种情况的答案很有趣。