在 1,3b 行数据库上运行查询时,我收到“读取超时”消息。
这不是将推文中的主题标签分组在一起的特定高级查询:
SELECT case when match(hashtag,
'[Cc]orona.*|COVID.*|[Cc]ovid.*|[Cc]oVID_19.*|[Cc]orvid19.*|COVD19.*|CORONA.*|KILLTHEVI.*|SARSCoV.*|ChineseVi.*|WuhanVir.*|ChinaVir.*|[Vv]irus.*|
[Qq]uarantine|[Pp]andemic.*|[Cc]linical[Tt]rial.*|FlattenTheCurve.*|SocialDistancing.*|StayHome.*|StayTheFHome.*|StayAtHome.*|stopthespread.*|
SafeHands.*|WashYourHands.*|SelfIsolation.*') then 'COVID19'
when match(hashtag, '[Jj]anta[Cc]urfew.*|[Jj]anata[Cc]urfew.*') then 'JantaCurfew'
when match(hashtag, 'Bhula.*') then 'Bhula'
when match(hashtag, '[Ss]t[Pp]atrick.*|HappyStPatrick') then 'StPatricks day'
when match(hashtag, '[Cc]hina.*') then 'China'
when match(hashtag, '[Ii]taly.*') then 'Italy'
when match(hashtag, '[Ii]ran.*') then 'Iran'
when match(hashtag, '[Ii]ndia.*') then 'India'
when match(hashtag, '[Hh]appy[Mm]others[Dd]ay.*|[Mm]others[Dd]ay.*') then 'MothersDay'
else hashtag END
as Hashtag,
SUM(CASE WHEN created >= '2020-05-14 00:00:00' AND created <= '2020-03-14 23:59:59' THEN 1 END) "May 14th'20",
SUM(CASE WHEN created >= '2020-05-13 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将上传的csv文件转换为对象,以便可以保存在db中。在控制器中,我正在使用CsvHeler
但是看起来这只有在我首先保存文件并从中读取时才有效。CsvHelper无法直接从内存流中处理文件内容。在第一个GetRecords下面的代码中返回空
[HttpPost]
[Route(ApiRoutes.EodVariationMarginPlugs)]
public async Task<IActionResult> UploadPlugAsync(IFormFile filePayload)
{
if (filePayload.Length > 0)
{
using (var stream = new MemoryStream())
{
filePayload.CopyTo(stream);
using (var reader = new StreamReader(stream))
using (var csv = new CsvReader(reader))
{
csv.Configuration.RegisterClassMap<EodVariationMarginPlugMap>();
csv.Configuration.MissingFieldFound = null;
var records = csv.GetRecords<EodVariationMarginPlug>().ToList(); // record count is 0
foreach (var p in records)
{
p.CreatedAt = DateTimeOffset.Now;
p.CreatedBy = HttpContext.User.Identity.Name;
}
await _repository.InsertPlugsAsync(records);
}
}
var fileName = ContentDispositionHeaderValue
.Parse(filePayload.ContentDisposition)
.FileName.ToString().Trim('"');
var path = Path.Combine(Path.GetTempPath(), fileName);
using (var fileStream …
Run Code Online (Sandbox Code Playgroud) 我创建了表并尝试多次插入值以检查重复项。我可以看到重复项正在插入。有没有办法避免clickhouse表中的重复?
CREATE TABLE sample.tmp_api_logs ( id UInt32, EventDate Date)
ENGINE = MergeTree(EventDate, id, (EventDate,id), 8192);
insert into sample.tmp_api_logs values(1,'2018-11-23'),(2,'2018-11-23');
insert into sample.tmp_api_logs values(1,'2018-11-23'),(2,'2018-11-23');
select * from sample.tmp_api_logs;
/*
??id????EventDate??
? 1 ? 2018-11-23 ?
? 2 ? 2018-11-23 ?
???????????????????
??id????EventDate??
? 1 ? 2018-11-23 ?
? 2 ? 2018-11-23 ?
???????????????????
*/
Run Code Online (Sandbox Code Playgroud) 当 Clickhouse 查询内存不足时,我该怎么办?你不能只是调高内存,对吧?内存也有限制,硬盘怎么配置?
SELECT
UserID,
Title
FROM
(
SELECT
L.UserID,
L.Title
FROM tutorial.hits_v1 AS L
INNER JOIN tutorial.hits_v2 AS R ON L.UserID = R.UserID
) AS T
ORDER BY UserID ASC
LIMIT 10
Run Code Online (Sandbox Code Playgroud)
#user.d/abc.xml
<?xml version="1.0"?>
<yandex>
<!-- Profiles of settings. -->
<profiles>
<!-- Default settings. -->
<default>
<!-- Maximum memory usage for processing single query, in bytes. -->
<max_memory_usage>350000000</max_memory_usage>
<max_memory_usage_for_user>350000000</max_memory_usage_for_user>
<max_bytes_before_external_group_by>100000000</max_bytes_before_external_group_by>
<max_bytes_before_external_sort>100000000</max_bytes_before_external_sort>
</default>
</profiles>
</yandex>
Run Code Online (Sandbox Code Playgroud) 我需要在不使用 HTTP 库的情况下构建一个 http 服务器。
\n\n我的服务器正在运行,并且正在加载 html 页面,但我的<img src="..."/>
标签未加载,我收到呼叫,但无法在页面中预设 png/JPEG。
# Define socket host and port\nSERVER_HOST = \'0.0.0.0\'\nSERVER_PORT = 8000\n\n# Create socket\nserver_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\nserver_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)\nserver_socket.bind((SERVER_HOST, SERVER_PORT))\nserver_socket.listen(1)\nprint(\'Listening on port %s ...\' % SERVER_PORT)\n\nwhile True:\n # Wait for client connections\n client_connection, client_address = server_socket.accept()\n\n # Handle client request\n request = client_connection.recv(1024).decode()\n content = handle_request(request)\n\n # Send HTTP response\n if content:\n response = \'HTTP/1.1 200 OK\\n\\n\'\n response += content\n else:\n response = \'HTTP/1.1 404 NOT …
Run Code Online (Sandbox Code Playgroud) 我有以下 ingress.yml:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress
namespace: default
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/rewrite-target: /$2
labels:
app: ingress
spec:
rules:
- host:
http:
paths:
- path: /apistarter(/|$)(.*)
backend:
serviceName: svc-aspnetapistarter
servicePort: 5000
- path: //apistarter(/|$)(.*)
backend:
serviceName: svc-aspnetapistarter
servicePort: 5000
Run Code Online (Sandbox Code Playgroud)
部署我的 ASP.Net Core 2.2 API 应用程序并导航到 后http://localhost/apistarter/
,浏览器调试器控制台显示加载静态内容和 Javascript 的错误。此外,导航到http://localhost/apistarter/swagger/index.html
结果
Fetch error Not Found /swagger/v2/swagger.json
Run Code Online (Sandbox Code Playgroud)
我对使用不同路径前缀的多个微服务使用相同的入口。它使用 microk8s 在我的本地 kubernetes 集群上运行。还没有在任何云提供商上。我已经查看了如何配置 ASP.NET Core 多微服务应用程序和 Azure AKS 入口路由,以便它不会破坏 wwwroot 文件夹和https://docs.microsoft.com/en-us/aspnet/core 中的资源/host-and-deploy/proxy-load-balancer?view=aspnetcore-2.1 …
我正在尝试迁移 ClickHouse 中的一个 Postgres 表。这是我在 ClickHouse 想到的:
CREATE TABLE loads(
country_id UInt16,
partner_id UInt32,
is_unique UInt8,
ip String,
created_at DateTime
) ENGINE=MergeTree PARTITION BY toYYYYMM(created_at) ORDER BY (created_at);
Run Code Online (Sandbox Code Playgroud)
is_unique 这里是一个带有 0 或 1 的布尔值。我想知道聚合的计数:country_id、partner_id 和created_at,但我也想知道这些负载中有多少是唯一负载。在 Postgres 中,它看起来像:
SELECT
count(*) AS loads,
count(*) FILTER (WHERE is_unique) AS uniq,
country_id,
partner_id,
created_at::date AS ts
FROM loads
GROUP BY ts, country_id, partner_id
Run Code Online (Sandbox Code Playgroud)
ClickHouse 可以吗?还是我应该重新考虑如何聚合数据?我在手册中没有找到任何线索,除了count可以得到expr而不是星号,但count(is_unique = 1)
不起作用,只是返回与 count(*) 相同的数量。
我的基地有一个 json:
{"a":1,"b":2,"c":[{"d":3,"e":"str_1"}, {"d":4,"e":"str_2"}]}
Run Code Online (Sandbox Code Playgroud)
我需要获取每个键的所有唯一值,但在提取键“d”和键“e”的值时遇到一些问题。
使用:
SELECT
DISTINCT JSONExtractRaw(column, 'c')
FROM t1
Run Code Online (Sandbox Code Playgroud)
我得到:
[{"d":3,"e":"str_1"},
{"d":4,"e":"str_2"}]
Run Code Online (Sandbox Code Playgroud)
但是,如果我再次对键“d”和键“e”使用 JsonExtract 品种,它不会返回任何内容。如何解决这个问题呢?
在将复制的 MySQL 数据库重新加载到 Clickhouse 期间,使用“clickhouse-mysql”我遇到了“单个 INSERT 块的分区过多”,并且似乎无法进行。
到目前为止,我尝试过的一些事情:
Clickhouse 表的创建方式与自动创建(--create-table)的方式非常相似,但它确实错过了一些 NULLABLE 类型:
CREATE TABLE DB.DB__main (
`id` Int64,
`user_id` Int64,
`screenname` String,
`created` DateTime,
`tweet_id` Int64,
`tweet` String,
`retweet_count` Nullable(Int32),
`mediastatus` Nullable(String),
`country` Nullable(String),
`countrycode` Nullable(String),
`city` Nullable(String),
`latitude0` Nullable(String),
`longitude0` Nullable(String),
`latitude1` Nullable(String),
`longitude1` Nullable(String),
`latitude2` Nullable(String),
`longitude2` Nullable(String),
`latitude3` Nullable(String),
`longitude3` Nullable(String),
`datetime` DateTime,
`datetime_update` Nullable(DateTime),
`status` Nullable(String),
`div0` Nullable(String),
`div1` Nullable(String),
`div2` Nullable(Int64),
`datasource` …
Run Code Online (Sandbox Code Playgroud) 我看到 clickhouse 为每个分区键创建了多个目录。
文档说目录名称格式是:分区名称,最小数据块数,最大数据块数和块级别。例如,目录名称是201901_1_11_1
.
我认为这意味着该目录是属于分区201901的一部分,具有从1到11的块并且在级别1。所以我们可以有另一个部分,其目录类似于201901_12_21_1
,这意味着这部分属于分区201901,具有从12到21的块并且在级别1。
所以我认为分区被分成不同的部分。我对吗?
clickhouse ×7
asp.net-core ×2
c# ×1
csvhelper ×1
dbeaver ×1
get ×1
http ×1
insert ×1
kubernetes ×1
python ×1
sockets ×1
tcp ×1