CN118245498A - 多社交媒体平台的不同字段统一计算方法及装置 - Google Patents
多社交媒体平台的不同字段统一计算方法及装置 Download PDFInfo
- Publication number
- CN118245498A CN118245498A CN202410674024.9A CN202410674024A CN118245498A CN 118245498 A CN118245498 A CN 118245498A CN 202410674024 A CN202410674024 A CN 202410674024A CN 118245498 A CN118245498 A CN 118245498A
- Authority
- CN
- China
- Prior art keywords
- field
- data
- fields
- format
- sql
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 12
- 238000000034 method Methods 0.000 claims abstract description 71
- 238000012795 verification Methods 0.000 claims abstract description 25
- 238000012545 processing Methods 0.000 claims abstract description 12
- 238000007781 pre-processing Methods 0.000 claims abstract description 7
- 238000013507 mapping Methods 0.000 claims description 15
- 230000006870 function Effects 0.000 claims description 8
- 238000001914 filtration Methods 0.000 claims description 7
- 230000002159 abnormal effect Effects 0.000 claims description 3
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 238000012546 transfer Methods 0.000 claims description 3
- 238000004458 analytical method Methods 0.000 abstract description 2
- 238000004590 computer program Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例中提供了一种多社交媒体平台的不同字段统一计算方法、装置及电子设备,属于数据处理技术领域,该方法包括:将多社交媒体平台中各平台的字段集合存放在一个JSON文件中;将接收到的JSON格式字段集合转换为key‑value形式的预处理数据;针对初始化数据执行类Field格式校验;所述初始化数据执行类Field格式校验之后,根据不同的数据源以及类Field自动生成相应规范的SQL语句;根据自定义的阈值以及数据源的量级,将所述SQL语句拆分成多个SQL语句,将拆分后的多个SQL语句使用异步操作库进行异步获取操作,从数据源中获取到相应的数据,进而计算组装成基础的数据结构。本方案具有高复用性且提高了数据的可比性和分析的准确性。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种多社交媒体平台的不同字段统一计算方法、装置及电子设备。
背景技术
社交媒体平台数据指标的数据格式多样,每个平台可能采用不同的数据结构和表示方法,导致数据格式之间存在较大差异。这可能是因为各个平台在设计数据格式时考虑到了各自的需求和特点,缺乏统一的标准。
来自不同社交媒体平台的数据质量参差不齐,部分数据可能存在缺失值、异常值,无兼容处理并且缺乏统一计算输出的方法。
目前缺乏一种通用的、适用于多个平台的指标计算算法。这可能是因为不同平台的业务模式、数据特点和运营策略各不相同,导致无法找到一种适用于所有平台的通用算法。
上述问题成为需要解决的技术问题。
发明内容
有鉴于此,本发明实施例提供一种多社交媒体平台的不同字段统一计算方法、装置及电子设备,至少部分解决现有技术中存在的问题。
第一方面,本发明实施例提供了一种多社交媒体平台的不同字段统一计算方法,包括:
将多社交媒体平台中各平台的字段集合存放在一个JSON文件中,所述字段集合包含表名、数据源、时间过滤字段和业务逻辑字段;
将接收到的JSON格式字段集合转换为key-value形式的预处理数据,对所述预处理数据通过@dataclass的_post_init_方法自动进行字段初始化操作,得到初始化数据;
针对所述初始化数据执行类Field格式校验,所述执行类Field格式校验包含必传字段校验、字段格式校验、字段值范围校验、数据表在库中存在性校验以及数据字段在表中存在性校验;
所述初始化数据执行类Field格式校验之后,根据不同的数据源以及类Field自动生成相应规范的SQL语句;
根据自定义的阈值以及数据源的量级,将所述SQL语句拆分成多个SQL语句,将拆分后的多个SQL语句使用异步操作库进行异步获取操作,从数据源中获取到相应的数据,进而计算组装成基础的数据结构。
根据本公开实施例的一种具体实现方式,所述将多社交媒体平台中各平台的字段集合存放在一个JSON文件中,包括:
用platforms 描述各平台对象名称,每个平台对象都包含metadata、database和fields三个部分,metadata 包含平台的元数据,包括名称、描述和版本信息,database 包含与数据库相关的信息,包括表名和数据源,fields用于细分不同类型的字段,包括时间戳、内容和用户信息;
在fields中,不同类型的字段被组织在不同的对象中,每种类型的字段下面包含了具体的字段名,这些字段名代表了存储在数据库中的实际列名,特定字段以数组的形式存储,用于在特定字段中存储多个值。
根据本公开实施例的一种具体实现方式,所述将接收到的JSON格式字段集合转换为key-value形式的预处理数据,对所述预处理数据通过@dataclass的_post_init_方法自动进行字段初始化操作,得到初始化数据,包括:
接收JSON格式的字符串表示的字段集合;
使用Python的json库来解析JSON格式的字符串,将其转换为一个Python字典,所述Python字典表示key-value形式的预处理数据。
根据本公开实施例的一种具体实现方式,所述将接收到的JSON格式字段集合转换为key-value形式的预处理数据,对所述预处理数据通过@dataclass的_post_init_方法自动进行字段初始化操作,得到初始化数据,还包括:
使用@dataclass装饰器定义一个Python类,所述Python类具有与JSON字段相对应的属性和方法;
在创建这个Python类的实例时,利用__init__方法根据JSON数据自动设置属性值。
根据本公开实施例的一种具体实现方式,所述针对所述初始化数据执行类Field格式校验,包括:
通过检查数据字典或类的属性列表,并与初始化数据中的键进行比较,确保所有定义为必传的字段在初始化数据中都已经提供,如果发现缺失的必传字段,抛出异常或返回错误提示;
对于每个字段,定义其期望的格式,使用Python的内置函数或第三方库来验证初始化数据中每个字段的格式是否符合预期;
检查特定字段是否具有特定的值范围,检查初始化数据中的字段值是否落在这些范围内;
连接到数据库,执行一个SELECT语句,尝试从目标表中检索数据,或者执行一个特定的元数据查询来列出所有表并检查所需表是否在列表中;
通过执行一个包含所有字段的INSERT或UPDATE语句,验证初始化数据中的每个字段是否确实存在于目标数据表中。
根据本公开实施例的一种具体实现方式,所述根据不同的数据源以及类Field自动生成相应规范的SQL语句,包括:
通过在Field类中定义存储了数据源中对应的字段名或列名的属性,为每个Field实例分配一个对应的数据源字段名或列名,从而定义类Field与数据源之间的映射关系;
预先定义包含占位符SQL模板,用于在运行时替换为实际的字段名和值;
根据校验后的数据和类Field的定义,遍历Field的实例,并根据映射关系获取对应的数据源字段名,将这些字段名填充到SQL模板的占位符中,将初始化数据中的值转换为SQL语句的格式。
根据本公开实施例的一种具体实现方式,所述根据不同的数据源以及类Field自动生成相应规范的SQL语句,还包括:
定义类Field,所述类Field包含字段名、数据类型以及是否必传;
对初始化数据进行类Field格式校验,确保数据的正确性,根据所需的操作,预定义SQL模板,根据类Field的定义和数据源信息,建立字段映射关系;
对于每个字段,根据字段映射关系,获取数据源中的列名,根据字段的数据类型,对初始化数据中的值进行格式化或转义处理,将列名和格式化后的值替换到SQL模板的占位符中,将所有字段的替换结果组合成完整的SQL语句。
根据本公开实施例的一种具体实现方式,所述根据自定义的阈值以及数据源的量级,将所述SQL语句拆分成多个SQL语句,将拆分后的多个SQL语句使用异步操作库进行异步获取操作,包括:
根据自定义的阈值和数据源的量级,确定SQL语句的拆分策略,包括:将INSERT语句拆分成多个包含固定数量的记录的INSERT语句,将原始的SQL语句拆分成多个小的SQL语句,将WHERE子句中的条件拆分成多个部分,将INSERT语句中的VALUES列表拆分成多个子列表;
使用异步操作库创建异步任务,每个任务负责执行一个拆分后的SQL语句,对于每个异步任务或协程,捕获并处理发生的异常,收集并整合所有任务的执行结果,在所有异步任务完成后,关闭异步环境。
第二方面,本发明实施例提供了一种多社交媒体平台的不同字段统一计算装置,包括:
设置模块,将多社交媒体平台中各平台的字段集合存放在一个JSON文件中,所述字段集合包含表名、数据源、时间过滤字段和业务逻辑字段;
转换模块,将接收到的JSON格式字段集合转换为key-value形式的预处理数据,对所述预处理数据通过@dataclass的_post_init_方法自动进行字段初始化操作,得到初始化数据;
校验模块,针对所述初始化数据执行类Field格式校验,所述执行类Field格式校验包含必传字段校验、字段格式校验、字段值范围校验、数据表在库中存在性校验以及数据字段在表中存在性校验;
生成模块,所述初始化数据执行类Field格式校验之后,根据不同的数据源以及类Field自动生成相应规范的SQL语句;
组装模块,根据自定义的阈值以及数据源的量级,将所述SQL语句拆分成多个SQL语句,将拆分后的多个SQL语句使用异步操作库进行异步获取操作,从数据源中获取到相应的数据,进而计算组装成基础的数据结构。
第三方面,本发明实施例还提供了一种电子设备,该电子设备包括:
至少一个处理器;以及,
与该至少一个处理器通信连接的存储器;其中,
该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行前述任第一方面或第一方面的任一实现方式中的多社交媒体平台的不同字段统一计算方法。
第四方面,本发明实施例还提供了一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使该计算机执行前述第一方面或第一方面的任一实现方式中的多社交媒体平台的不同字段统一计算方法。
第五方面,本发明实施例还提供了一种计算机程序产品,该计算机程序产品包括存储在非暂态计算机可读存储介质上的计算程序,该计算机程序包括程序指令,当该程序指令被计算机执行时,使该计算机执行前述第一方面或第一方面的任一实现方式中的多社交媒体平台的不同字段统一计算方法。
本发明实施例中的多社交媒体平台的不同字段统一计算方案,包括:将多社交媒体平台中各平台的字段集合存放在一个JSON文件中,所述字段集合包含表名、数据源、时间过滤字段和业务逻辑字段;
将接收到的JSON格式字段集合转换为key-value形式的预处理数据,对所述预处理数据通过@dataclass的_post_init_方法自动进行字段初始化操作,得到初始化数据;针对所述初始化数据执行类Field格式校验,所述执行类Field格式校验包含必传字段校验、字段格式校验、字段值范围校验、数据表在库中存在性校验以及数据字段在表中存在性校验;所述初始化数据执行类Field格式校验之后,根据不同的数据源以及类Field自动生成相应规范的SQL语句;根据自定义的阈值以及数据源的量级,将所述SQL语句拆分成多个SQL语句,将拆分后的多个SQL语句使用异步操作库进行异步获取操作,从数据源中获取到相应的数据,进而计算组装成基础的数据结构。本方案采用高效且便利的方式来统一计算多个社交媒体平台的指标字段数据,此方法具有高复用性且提高了数据的可比性和分析的准确性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的一种多社交媒体平台的不同字段统一计算方法流程示意图;
图2为本发明实施例提供的另一种多社交媒体平台的不同字段统一计算方法流程示意图;
图3为本发明实施例提供的多社交媒体平台的不同字段统一计算装置结构示意图;
图4为本发明实施例提供的电子设备示意图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
以下通过特定的具体实例说明本公开的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本公开的其他优点与功效。显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。本公开还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本公开的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本公开的基本构想,图式中仅显示与本公开中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。
本公开实施例提供一种多社交媒体平台的不同字段统一计算方法。本实施例提供的多社交媒体平台的不同字段统一计算方法可以由一计算装置来执行,该计算装置可以实现为软件,或者实现为软件和硬件的组合,该计算装置可以集成设置在服务器、终端设备等中。
参见图1和图2,本公开实施例提供了一种多社交媒体平台的不同字段统一计算方法,包括:
S101,将多社交媒体平台中各平台的字段集合存放在一个JSON文件中,所述字段集合包含表名、数据源、时间过滤字段和业务逻辑字段。
可以定义platforms数组来描述多个平台对象,每个平台对象都有一个platform_name字段来标识平台的名称,以及一个fields对象来存储该平台的字段集合。fields对象包含table_name、data_source、time_filter_fields和business_logic_fields等字段。
table_name字段表示存储平台数据的表名。
data_source字段表示平台数据的数据源。
time_filter_fields对象包含start_time和end_time字段,用于指定时间过滤的字段名。
business_logic_fields数组包含业务逻辑字段的列表。
进一步的,每个平台对象还可以包含metadata、database和fields三个部分,metadata 包含平台的元数据,包括名称、描述和版本信息,database 包含与数据库相关的信息,包括表名和数据源,fields用于细分不同类型的字段,包括时间戳、内容和用户信息;
在fields中,不同类型的字段被组织在不同的对象中,每种类型的字段下面包含了具体的字段名,这些字段名代表了存储在数据库中的实际列名,特定字段以数组的形式存储,用于在特定字段中存储多个值。
S102,将接收到的JSON格式字段集合转换为key-value形式的预处理数据,对所述预处理数据通过@dataclass的_post_init_方法自动进行字段初始化操作,得到初始化数据。
可以使用@dataclass装饰器来自动处理类的初始化,包括将JSON数据转换为类的实例。@dataclass会自动生成__init__方法,为了将JSON格式的字段集合转换为key-value形式的预处理数据,并通过@dataclass的_post_init_方法进行自动初始化,可以按照以下步骤操作:
定义一个@dataclass,其中包含想要从JSON中提取的字段。
在这个类中,实现一个_post_init_方法,用于执行任何必要的初始化逻辑。
解析JSON数据,并将其转换为这个@dataclass的实例。
具体的,可以定义PlatformFields数据类,它自动拥有一个根据类字段生成的__init__方法,同时还定义了一个_post_init_装饰的方法init_fields,它会在实例创建后立即执行,通过定义json.loads(json_data),将JSON字符串转换为Python字典。然后,使用PlatformFields(**data)创建一个PlatformFields类的实例,并自动调用了__init__方法和_post_init_方法。
S103,针对所述初始化数据执行类Field格式校验,所述执行类Field格式校验包含必传字段校验、字段格式校验、字段值范围校验、数据表在库中存在性校验以及数据字段在表中存在性校验。
具体的,可以验证所有必传字段是否都已提供。对于每个必传字段,检查其是否存在于初始化数据中,并且不是空值或None。如果发现任何必传字段缺失或为空,应抛出异常或返回错误消息。
根据每个字段的预期格式(如字符串、整数、浮点数、日期等),验证初始化数据中对应字段的格式是否正确。可以使用正则表达式或数据类型转换等方法进行校验。如果字段格式不符合要求,应记录错误并采取相应的处理措施。
对于有特定值范围要求的字段(如年龄、百分比等),需要验证初始化数据中的字段值是否在该范围内。可以通过比较操作符或范围检查函数来实现。如果字段值超出范围,应提示错误信息并进行相应处理。
验证初始化数据中指定的数据表是否确实存在于数据库中。这通常涉及到与数据库的连接和查询操作,以检查表的存在性。如果表不存在,应记录错误并通知用户或采取其他恢复措施。
验证初始化数据中指定的字段是否确实存在于对应的数据表中。这同样需要查询数据库,获取表的字段信息,并与初始化数据中的字段进行比对。如果发现任何字段在表中不存在,应记录错误并提示用户进行修正。
为了提高代码的可维护性和可读性,将校验逻辑封装成独立的函数或方法,并在适当的地方调用它们,这样可以使代码更加模块化,并且便于后续的扩展和维护。
S104,所述初始化数据执行类Field格式校验之后,根据不同的数据源以及类Field自动生成相应规范的SQL语句。
具体的,可以根据数据源的不同,准备相应的数据库连接信息,如主机名、端口、用户名、密码等。这些信息可以存储在配置文件中,或在运行时通过参数传入。
根据类Field和数据库表结构的对应关系,建立字段映射表。这个映射表可以是一个字典或类似的数据结构,用于存储类Field名称与数据库字段名称之间的对应关系。
根据常见的数据库操作(如查询、插入、更新、删除等),准备相应的SQL语句模板。这些模板可以包含占位符,用于在生成具体SQL语句时替换为实际的字段名和表名。
根据类Field的信息(包括字段名、数据类型、约束条件等),结合字段映射表和SQL语句模板,自动生成具体的SQL语句。在生成过程中,需要确保字段名的正确替换,以及数据类型和约束条件的正确应用。
根据需要,对生成的SQL语句进行优化,以提高查询效率或避免潜在的SQL注入风险,包括使用索引、避免全表扫描、使用参数化查询等措施。
S105,根据自定义的阈值以及数据源的量级,将所述SQL语句拆分成多个SQL语句,将拆分后的多个SQL语句使用异步操作库进行异步获取操作,从数据源中获取到相应的数据,进而计算组装成基础的数据结构。
具体的,可以根据数据源的量级(如记录数、数据大小等)和自定义的性能要求,确定SQL语句拆分的阈值。阈值可以基于数据行数(如每次查询不超过10万行)、查询时间(如每次查询不超过1秒)或其他性能指标。
根据拆分阈值,将原始的SQL语句拆分成多个较小的SQL语句。拆分可以基于数据的范围(如ID范围、时间范围等)、数据的分区(如按月份、年份等)或其他逻辑。确保拆分后的SQL语句能够完整覆盖原始查询的需求,并且逻辑上是一致的。
选择异步操作库,如Python中的asyncio、aiomysql,或Node.js中的async/await、Promise等。这些库提供了异步执行函数或方法的能力,使得可以并发地执行多个SQL查询操作,而不会阻塞主线程。
使用异步操作库,创建多个异步任务来执行拆分后的SQL语句。每个异步任务负责执行一个SQL语句,并从数据源中获取相应的数据。由于是异步操作,这些任务可以同时进行,从而提高了整体的数据获取速度。
当所有异步任务完成后,收集它们返回的数据。根据业务逻辑,对这些数据进行必要的计算或处理。将处理后的数据组装成基础的数据结构,如列表、字典或自定义的对象等。
与现有技术方案相比,本发明具有如下有益效果:
1)灵活性: 生成指标语言, 支持配置入库操作, 指标配置灵活,无需改动代码即可新旧指标的增减计算。
2)统一性: 能够将不同海外平台的指标统一计算,实现了跨平台数据的可比性。
3)准确性:指标预校验操作降低错误率,采用特有的数据分级操作,不同指标分发到特有的计算类进行隔离计算,保证指标数据准确性。
4)时效性:多数据源操作通过阈值计算拆分SQL异步查询 大大缩短了指标数据获取时间。
5)可扩展性:系统架构灵活,可以根据需要进行定制和扩展,适用于不同类型的社交媒体平台。
6)复用性:方法调用简单, 只需维护对应的计算类即可, 可跨项目使用,具有高复用性。
根据本公开实施例的一种具体实现方式,所述将多社交媒体平台中各平台的字段集合存放在一个JSON文件中,包括:
用platforms 描述各平台对象名称,每个平台对象都包含metadata、database和fields三个部分,metadata 包含平台的元数据,包括名称、描述和版本信息,database 包含与数据库相关的信息,包括表名和数据源,fields用于细分不同类型的字段,包括时间戳、内容和用户信息;
在fields中,不同类型的字段被组织在不同的对象中,每种类型的字段下面包含了具体的字段名,这些字段名代表了存储在数据库中的实际列名,特定字段以数组的形式存储,用于在特定字段中存储多个值。
根据本公开实施例的一种具体实现方式,所述将接收到的JSON格式字段集合转换为key-value形式的预处理数据,对所述预处理数据通过@dataclass的_post_init_方法自动进行字段初始化操作,得到初始化数据,包括:
接收JSON格式的字符串表示的字段集合;
使用Python的json库来解析JSON格式的字符串,将其转换为一个Python字典,所述Python字典表示key-value形式的预处理数据。
根据本公开实施例的一种具体实现方式,所述将接收到的JSON格式字段集合转换为key-value形式的预处理数据,对所述预处理数据通过@dataclass的_post_init_方法自动进行字段初始化操作,得到初始化数据,还包括:
使用@dataclass装饰器定义一个Python类,所述Python类具有与JSON字段相对应的属性和方法;
在创建这个Python类的实例时,利用__init__方法根据JSON数据自动设置属性值。
根据本公开实施例的一种具体实现方式,所述针对所述初始化数据执行类Field格式校验,包括:
通过检查数据字典或类的属性列表,并与初始化数据中的键进行比较,确保所有定义为必传的字段在初始化数据中都已经提供,如果发现缺失的必传字段,抛出异常或返回错误提示;
对于每个字段,定义其期望的格式,使用Python的内置函数或第三方库来验证初始化数据中每个字段的格式是否符合预期;
检查特定字段是否具有特定的值范围,检查初始化数据中的字段值是否落在这些范围内;
连接到数据库,执行一个SELECT语句,尝试从目标表中检索数据,或者执行一个特定的元数据查询来列出所有表并检查所需表是否在列表中;
通过执行一个包含所有字段的INSERT或UPDATE语句,验证初始化数据中的每个字段是否确实存在于目标数据表中。
根据本公开实施例的一种具体实现方式,所述根据不同的数据源以及类Field自动生成相应规范的SQL语句,包括:
通过在Field类中定义存储了数据源中对应的字段名或列名的属性,为每个Field实例分配一个对应的数据源字段名或列名,从而定义类Field与数据源之间的映射关系;
预先定义包含占位符SQL模板,用于在运行时替换为实际的字段名和值;
根据校验后的数据和类Field的定义,遍历Field的实例,并根据映射关系获取对应的数据源字段名,将这些字段名填充到SQL模板的占位符中,将初始化数据中的值转换为SQL语句的格式。
根据本公开实施例的一种具体实现方式,所述根据不同的数据源以及类Field自动生成相应规范的SQL语句,还包括:
定义类Field,所述类Field包含字段名、数据类型以及是否必传;
对初始化数据进行类Field格式校验,确保数据的正确性,根据所需的操作,预定义SQL模板,根据类Field的定义和数据源信息,建立字段映射关系;
对于每个字段,根据字段映射关系,获取数据源中的列名,根据字段的数据类型,对初始化数据中的值进行格式化或转义处理,将列名和格式化后的值替换到SQL模板的占位符中,将所有字段的替换结果组合成完整的SQL语句。
根据本公开实施例的一种具体实现方式,所述根据自定义的阈值以及数据源的量级,将所述SQL语句拆分成多个SQL语句,将拆分后的多个SQL语句使用异步操作库进行异步获取操作,包括:
根据自定义的阈值和数据源的量级,确定SQL语句的拆分策略,包括:将INSERT语句拆分成多个包含固定数量的记录的INSERT语句,将原始的SQL语句拆分成多个小的SQL语句,将WHERE子句中的条件拆分成多个部分,将INSERT语句中的VALUES列表拆分成多个子列表;
使用异步操作库创建异步任务,每个任务负责执行一个拆分后的SQL语句,对于每个异步任务或协程,捕获并处理发生的异常,收集并整合所有任务的执行结果,在所有异步任务完成后,关闭异步环境。
与上面的方法实施例相对应,参见图3,本发明实施例还公开了一种多社交媒体平台的不同字段统一计算装置30,包括:
设置模块301,将多社交媒体平台中各平台的字段集合存放在一个JSON文件中,所述字段集合包含表名、数据源、时间过滤字段和业务逻辑字段;
转换模块302,将接收到的JSON格式字段集合转换为key-value形式的预处理数据,对所述预处理数据通过@dataclass的_post_init_方法自动进行字段初始化操作,得到初始化数据;
校验模块303,针对所述初始化数据执行类Field格式校验,所述执行类Field格式校验包含必传字段校验、字段格式校验、字段值范围校验、数据表在库中存在性校验以及数据字段在表中存在性校验;
生成模块304,所述初始化数据执行类Field格式校验之后,根据不同的数据源以及类Field自动生成相应规范的SQL语句;
组装模块305,根据自定义的阈值以及数据源的量级,将所述SQL语句拆分成多个SQL语句,将拆分后的多个SQL语句使用异步操作库进行异步获取操作,从数据源中获取到相应的数据,进而计算组装成基础的数据结构。
参见图4,本发明实施例还提供了一种电子设备60,该电子设备包括:
至少一个处理器;以及,
与该至少一个处理器通信连接的存储器;其中,
该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行前述方法实施例中多社交媒体平台的不同字段统一计算方法。
本发明实施例还提供了一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使该计算机执行前述方法实施例中。
本发明实施例还提供了一种计算机程序产品,该计算机程序产品包括存储在非暂态计算机可读存储介质上的计算程序,该计算机程序包括程序指令,当该程序指令被计算机执行时,使该计算机执行前述方法实施例中的多社交媒体平台的不同字段统一计算方法。
下面参考图4,其示出了适于用来实现本公开实施例的电子设备60的结构示意图。本公开实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图4示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图4所示,电子设备60可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储装置608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有电子设备60操作所需的各种程序和数据。处理装置601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
通常,以下装置可以连接至I/O接口605:包括例如触摸屏、触摸板、键盘、鼠标、图像传感器、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备60与其他设备进行无线或有线通信以交换数据。虽然图4示出了具有各种装置的电子设备60,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从ROM 602被安装。在该计算机程序被处理装置601执行时,执行本公开实施例的方法中限定的上述功能。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种多社交媒体平台的不同字段统一计算方法,其特征在于,包括:
将多社交媒体平台中各平台的字段集合存放在一个JSON文件中,所述字段集合包含表名、数据源、时间过滤字段和业务逻辑字段;
将接收到的JSON格式字段集合转换为key-value形式的预处理数据,对所述预处理数据通过@dataclass的_post_init_方法自动进行字段初始化操作,得到初始化数据;
针对所述初始化数据执行类Field格式校验,所述执行类Field格式校验包含必传字段校验、字段格式校验、字段值范围校验、数据表在库中存在性校验以及数据字段在表中存在性校验;
所述初始化数据执行类Field格式校验之后,根据不同的数据源以及类Field自动生成相应规范的SQL语句;
根据自定义的阈值以及数据源的量级,将所述SQL语句拆分成多个SQL语句,将拆分后的多个SQL语句使用异步操作库进行异步获取操作,从数据源中获取到相应的数据,进而计算组装成基础的数据结构。
2.根据权利要求1所述的方法,其特征在于,所述将多社交媒体平台中各平台的字段集合存放在一个JSON文件中,包括:
用platforms 描述各平台对象名称,每个平台对象都包含metadata、database和fields三个部分,metadata 包含平台的元数据,包括名称、描述和版本信息,database 包含与数据库相关的信息,包括表名和数据源,fields用于细分不同类型的字段,包括时间戳、内容和用户信息;
在fields中,不同类型的字段被组织在不同的对象中,每种类型的字段下面包含了具体的字段名,这些字段名代表了存储在数据库中的实际列名,特定字段以数组的形式存储,用于在特定字段中存储多个值。
3.根据权利要求2所述的方法,其特征在于,所述将接收到的JSON格式字段集合转换为key-value形式的预处理数据,对所述预处理数据通过@dataclass的_post_init_方法自动进行字段初始化操作,得到初始化数据,包括:
接收JSON格式的字符串表示的字段集合;
使用Python的json库来解析JSON格式的字符串,将其转换为一个Python字典,所述Python字典表示key-value形式的预处理数据。
4.根据权利要求3所述的方法,其特征在于,所述将接收到的JSON格式字段集合转换为key-value形式的预处理数据,对所述预处理数据通过@dataclass的_post_init_方法自动进行字段初始化操作,得到初始化数据,还包括:
使用@dataclass装饰器定义一个Python类,所述Python类具有与JSON字段相对应的属性和方法;
在创建这个Python类的实例时,利用__init__方法根据JSON数据自动设置属性值。
5.根据权利要求4所述的方法,其特征在于,所述针对所述初始化数据执行类Field格式校验,包括:
通过检查数据字典或类的属性列表,并与初始化数据中的键进行比较,确保所有定义为必传的字段在初始化数据中都已经提供,如果发现缺失的必传字段,抛出异常或返回错误提示;
对于每个字段,定义其期望的格式,使用Python的内置函数或第三方库来验证初始化数据中每个字段的格式是否符合预期;
检查特定字段是否具有特定的值范围,检查初始化数据中的字段值是否落在这些范围内;
连接到数据库,执行一个SELECT语句,尝试从目标表中检索数据,或者执行一个特定的元数据查询来列出所有表并检查所需表是否在列表中;
通过执行一个包含所有字段的INSERT或UPDATE语句,验证初始化数据中的每个字段是否确实存在于目标数据表中。
6.根据权利要求5所述的方法,其特征在于,所述根据不同的数据源以及类Field自动生成相应规范的SQL语句,包括:
通过在Field类中定义存储了数据源中对应的字段名或列名的属性,为每个Field实例分配一个对应的数据源字段名或列名,从而定义类Field与数据源之间的映射关系;
预先定义包含占位符SQL模板,用于在运行时替换为实际的字段名和值;
根据校验后的数据和类Field的定义,遍历Field的实例,并根据映射关系获取对应的数据源字段名,将这些字段名填充到SQL模板的占位符中,将初始化数据中的值转换为SQL语句的格式。
7.根据权利要求6所述的方法,其特征在于,所述根据不同的数据源以及类Field自动生成相应规范的SQL语句,还包括:
定义类Field,所述类Field包含字段名、数据类型以及是否必传;
对初始化数据进行类Field格式校验,确保数据的正确性,根据所需的操作,预定义SQL模板,根据类Field的定义和数据源信息,建立字段映射关系;
对于每个字段,根据字段映射关系,获取数据源中的列名,根据字段的数据类型,对初始化数据中的值进行格式化或转义处理,将列名和格式化后的值替换到SQL模板的占位符中,将所有字段的替换结果组合成完整的SQL语句。
8.根据权利要求7所述的方法,其特征在于,所述根据自定义的阈值以及数据源的量级,将所述SQL语句拆分成多个SQL语句,将拆分后的多个SQL语句使用异步操作库进行异步获取操作,包括:
根据自定义的阈值和数据源的量级,确定SQL语句的拆分策略,包括:将INSERT语句拆分成多个包含固定数量的记录的INSERT语句,将原始的SQL语句拆分成多个小的SQL语句,将WHERE子句中的条件拆分成多个部分,将INSERT语句中的VALUES列表拆分成多个子列表;
使用异步操作库创建异步任务,每个任务负责执行一个拆分后的SQL语句,对于每个异步任务或协程,捕获并处理发生的异常,收集并整合所有任务的执行结果,在所有异步任务完成后,关闭异步环境。
9.一种多社交媒体平台的不同字段统一计算装置,其特征在于,包括:
设置模块,将多社交媒体平台中各平台的字段集合存放在一个JSON文件中,所述字段集合包含表名、数据源、时间过滤字段和业务逻辑字段;
转换模块,将接收到的JSON格式字段集合转换为key-value形式的预处理数据,对所述预处理数据通过@dataclass的_post_init_方法自动进行字段初始化操作,得到初始化数据;
校验模块,针对所述初始化数据执行类Field格式校验,所述执行类Field格式校验包含必传字段校验、字段格式校验、字段值范围校验、数据表在库中存在性校验以及数据字段在表中存在性校验;
生成模块,所述初始化数据执行类Field格式校验之后,根据不同的数据源以及类Field自动生成相应规范的SQL语句;
组装模块,根据自定义的阈值以及数据源的量级,将所述SQL语句拆分成多个SQL语句,将拆分后的多个SQL语句使用异步操作库进行异步获取操作,从数据源中获取到相应的数据,进而计算组装成基础的数据结构。
10.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述权利要求1-8任一项所述的多社交媒体平台的不同字段统一计算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410674024.9A CN118245498A (zh) | 2024-05-28 | 2024-05-28 | 多社交媒体平台的不同字段统一计算方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410674024.9A CN118245498A (zh) | 2024-05-28 | 2024-05-28 | 多社交媒体平台的不同字段统一计算方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118245498A true CN118245498A (zh) | 2024-06-25 |
Family
ID=91564158
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410674024.9A Pending CN118245498A (zh) | 2024-05-28 | 2024-05-28 | 多社交媒体平台的不同字段统一计算方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118245498A (zh) |
-
2024
- 2024-05-28 CN CN202410674024.9A patent/CN118245498A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107861728B (zh) | 用于传统程序语言向现代程序语言转换的方法及其系统 | |
US11625236B2 (en) | Auto mapping recommender | |
CN101901265B (zh) | 一种虚拟试验数据对象化管理系统 | |
CN110334109B (zh) | 关系式数据库数据查询方法、系统、介质和电子设备 | |
CN106951231B (zh) | 一种计算机软件开发方法及装置 | |
CN104881275A (zh) | 一种电子报表生成方法及装置 | |
US20150006469A1 (en) | Methodology supported business intelligence (BI) software and system | |
CN111125064B (zh) | 一种生成数据库模式定义语句的方法和装置 | |
CN113448562B (zh) | 一种逻辑代码自动生成方法、装置和电子设备 | |
CN107562429A (zh) | 一种基于编译规则的Android系统静态划分方法 | |
CN110660395B (zh) | 一种基于语音识别的安全报告生成方法和装置 | |
US11403161B2 (en) | Method and apparatus for identifying errors in a data store | |
CN116775599A (zh) | 数据迁移方法、装置、电子设备、存储介质 | |
CN118245498A (zh) | 多社交媒体平台的不同字段统一计算方法及装置 | |
CN115357625A (zh) | 结构化数据比对方法、装置、电子设备及存储介质 | |
CN113609128A (zh) | 生成数据库实体类的方法、装置、终端设备及存储介质 | |
CN113626016A (zh) | 一种基于Vue+Element UI+Koa2的前后端分离的可重用组件 | |
US20110137959A1 (en) | Representing relational schema information using generic meta schemas | |
CN112650809B (zh) | 一种格式化树结构数据的方法、装置及电子设备 | |
CN117389544B (zh) | 一种人工智能的数据建模方法、装置、介质和设备 | |
US11604629B1 (en) | Automatic workflow generation based on annotated code statements | |
CN117473967A (zh) | 一种报表生成方法、装置、电子设备及存储介质 | |
KR100656559B1 (ko) | Bibd 방법론을 이용하는 프로그램 자동 개발 장치 | |
CN117827902A (zh) | 业务数据处理方法、装置、计算机设备以及存储介质 | |
CN117312619A (zh) | 字符串的处理方法、装置、计算机设备、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |