你好,该问题目前在Doris Master上已经修复,会随着1.2.2进行发布

Best
Chen Zhang
On 2023年1月28日 +0800 11:07, 王云飞 <yfw...@quant-chi.com>, wrote:
> doris版本号:
> <temp4cj.png>
>
> 建表语句:
> create table if not exists `dw_patent_test` (
> id VARCHAR(100)  NOT NULL COMMENT  '专利ID,为主键',
> title VARCHAR(1000)  COMMENT  '标题',
> abstract STRING  COMMENT  '摘要',
> address VARCHAR(1000)  COMMENT  '地址',
> applicants STRING  COMMENT  '申请人',
> inventors STRING  COMMENT  '发明人',
> zip_code VARCHAR(20)  COMMENT  '邮政编码',
> patent_type VARCHAR(50)  COMMENT  '专利类型',
> apply_code VARCHAR(50)  COMMENT  '申请号',
> apply_date DATE COMMENT  '申请日期',
> public_code VARCHAR(50)  COMMENT  '公开号',
> public_date DATE  COMMENT  '公开日期',
> ipc STRING  COMMENT  'IPC分类号',
> cpc STRING  COMMENT  'CPC分类号',
> agency VARCHAR(200)  COMMENT  '代理机构',
> agents VARCHAR(300)  COMMENT  '代理人',
> status VARCHAR(200) COMMENT  '法律状态',
> is_valid TINYINT COMMENT  '是否有效',
> province VARCHAR(50) COMMENT  'address所在省份',
> city VARCHAR(50) COMMENT  'address所在城市',
> area VARCHAR(50) COMMENT  'address所在区县',
> create_time DATETIME COMMENT  '创建时间',
> update_time DATETIME COMMENT  '更新时间'
> )
> ENGINE=OLAP
> unique KEY(`id`)
> DISTRIBUTED BY HASH(`id`) BUCKETS 30
> PROPERTIES (
>     "function_column.sequence_type" = 'Date',
>     "replication_allocation" = "tag.location.default: 1",
>     "in_memory" = "false"
> )
>
>
> 导入数据,使用python脚本,使用DorisClient第三方库:
> # -*- coding: utf-8 -*-
> import hashlib
> import logging
> import os
> import re
> import sys
> from collections import OrderedDict
>
> import pandas as pd
> import requests
>
> from elasticsearch import Elasticsearch
> from DorisClient import DorisSession
> from tqdm import tqdm
>
> # doris配置信息
> DORIS_FE_SERVERS = ['192.168.1.38:8030']
> DORIS_MYSQL_PORT = 9030
> DORIS_USER = 'root'
> DORIS_PASSWD = "123456"
> DORIS_DATABASE = "lz_dw_knowledge_center"
> DORIS_TABLE = "dw_patent_test"
>
>
> def main():
>     """
>     主函数入口
>     """
>
>     ## 连接doris
>     doris_cfg = {
>         'fe_servers': DORIS_FE_SERVERS,
>         'database': DORIS_DATABASE,
>         'user': DORIS_USER,
>         'passwd': DORIS_PASSWD,
>         "mysql_port": DORIS_MYSQL_PORT
>     }
>     doris = DorisSession(**doris_cfg)
>
>     data = []
>
>     doc_1 = {
>         "id": "instance_doc_patent-6245050e88217fde7b630feb9083438c",
>         "title": "一种改良型无纺布",
>         "abstract": 
> "本实用新型公开一种改良型无纺布,属于无纺布技术领域,包括上层无纺布、下层无纺布、胶粘层和透气层,其特征在于:所述透气层位于上层无纺布的上端,所述透气层和上层无纺布、上层无纺布和下层无纺布之间均通过胶粘层连接,所述上层无纺布的上端设有若干向下凹陷的图案一,所述图案一的下端设有粘连区,所述图案一的两侧设有未粘连区,所述粘连区和未粘连区之间设有空腔,所述未粘连区向外凸出,所述未粘连区的内部填充有强韧复合纤维,本实用的无纺布具有弹性强、透气性好等优点。",
>         "public_date": "2018-10-26",
>         "applicants": "浙江东阳市三星实业有限公司",
>         "zip_code": "",
>         "address": "浙江省金华市东阳市六石街道黄雾西路47号"
>     }
>
>     doc_2 = {
>         "id": "instance_doc_patent-6245050e88217fde7b630feb9083438c",
>         "title": "一种改良型无纺布",
>         "abstract": 
> "本实用新型公开一种改良型无纺布,属于无纺布技术领域,包括上层无纺布、下层无纺布、胶粘层和透气层,其特征在于:所述透气层位于上层无纺布的上端,所述透气层和上层无纺布、上层无纺布和下层无纺布之间均通过胶粘层连接,所述上层无纺布的上端设有若干向下凹陷的图案一,所述图案一的下端设有粘连区,所述图案一的两侧设有未粘连区,所述粘连区和未粘连区之间设有空腔,所述未粘连区向外凸出,所述未粘连区的内部填充有强韧复合纤维,本实用的无纺布具有弹性强、透气性好等优点。",
>         "public_date": "2018-10-23",
>         "applicants": "浙江东阳市三星实业有限公司",
>         "zip_code": "32100",
>         "address": "浙江省金华市东阳市六石街道黄雾西路47号"
>     }
>
>
>     dir_sort = OrderedDict(sorted(doc_1.items(), key=lambda t: t[0]))
>     data.append(dir_sort)
>
>     dir_sort = OrderedDict(sorted(doc_2.items(), key=lambda t: t[0]))
>     data.append(dir_sort)
>
>     ## 数据插入
>     if data:
>         success_flag = doris.streamload(table=DORIS_TABLE, json_array=data, 
> sequence_col="public_date")
>         if not success_flag:
>             msg = "数据插入失败,失败原因应插入条数{}, 实际插入条数0".format(str(len(data)))
>             print(msg)
>
>
> if __name__ == '__main__':
>     main()
>
>
>
>
> > ------------------------------------------------------------------
> > 发件人:chzhang1987 <chzhang1...@gmail.com>
> > 发送时间:2023年1月28日(星期六) 10:48
> > 收件人:dev <dev@doris.apache.org>; 王云飞 <yfw...@quant-chi.com>
> > 主 题:Re: doris uniq数据模型sequence序列替换失效
> >
> > 您好,在同一批次内部 sequence_col 的替换逻辑应该也是生效的,方便提供一下出现问题的doris 版本号,导入的数据、schema 
> > 和导入语句吗?你可以建立一个 issue,将相关信息放在 issue 中,便于跟进,谢谢
> >
> > Best
> > Chen Zhang
> > On 2023年1月28日 +0800 10:38, 王云飞 <yfw...@quant-chi.com>, wrote:
> > 您好!我在使用doris的uniq模型时,设置了某一列为sequence_col,但是在使用stream_load的方式导入的时候,同一批次的数据(两条数据相同id,就是sequence列不同)替换顺序逻辑失效,仍然是后者覆盖前者,如果是分成两批次导入,替换顺序逻辑有效。请问应该如何避免?
> > 如图所示,doc_1的public_date大,doc_2的小,但是导入之后,保留了doc_2,如果是分开导入就可以,同一批次导入就不行。
> >
>

Reply via email to