原因:用户为数据集的所有者,未勾选底下“以上行列权限设置,是否对数据集所有者和管理者生效”。
说明:行列权限是一个控制数据安全的很实用的功能,设置了行列权限后,所有该数据集涉及的资源都会影响,包括但不限于卡片、数据集、ETL操作等。
创建数据库数据集:创建数据库数据集时使用对应数据库语法。
在数据集/卡片上新建计算字段数据集的连接方式为直连:使用对应数据库语法;
数据集的链接方式为抽取:数据集为普通类型,使用spark语法,若数据集为高性能数据集,使用clickhouse语法;
数据集行列权限sql语法数据集的连接方式为直连:使用对应数据库语法;
数据集的链接方式为抽取:数据集为普通类型,使用spark语法,若数据集为高性能数据集,使用clickhouse语法;
ETL中新建计算字段/sql输入节点使用spark语法。
背景:
我们可能并不需要查询出所有字段(select *),并且当有join操作之后创建数据集是无法select *,会有报错某字段 is not unique in Record,因为平台不允许存在同名字段,所以必须要剔除重复的字段,但有时字段会又几十上百个,一一列出来写sql是个繁琐的工作。
【解决方案】:在数据库连接工具中可以查询出所有字段。
以Mysql为例,使用Navicat工具进行查询,查询语句如下,查出结果会自动按照逗号分隔,方便复制。
SELECT GROUP_CONCAT(COLUMN_NAME SEPARATOR ",") FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'db_name' AND TABLE_NAME = 'tb_name';
db_name:数据库名
tb_name:表名
【解决方案】:在ETL输出前加一步null替换后,数据就正常了。
有null值的数据集:

有null值的计算结果是错误的:

解决方法:在ETL输出前加一步null替换后,数据就正常了。

默认了字段关联,将目标字段选为“无关联”就可以了。
不能,如果要停止实时数据更新,下次再用数据集的时候也要重新创建(初始化)才行。
如果场景是:双十一才需要使用实时看板,然后就是明年双十一再用。
那建议是该实时数据集用完即删,下次用的时候再建。
数据集的中文名称在内置数据集builtin_data_source里。
「直连数据集」的更新过程要做两件事情:
1)修改该数据集的version。第一件事情会在「更新」的第一时间完成,很快。
2)获取该数据集的行数。第二件事稍微慢一点(有时你在界面上看到转圈圈就是因为这个工作比较慢)。
而基于该直连数据集的卡片,在刷新的时候,如果发现数据集的version和上次相比没有改变,则不会将sql发到客户数据库查询,而是读的本地缓存。反之,如果发现数据集的version变了,就会将sql直接发到客户的数据库查询,并且缓存到本地。
【原因】:行列权限的生效,只在对应数据库中完成的,不同的数据库使用的SQL函数是有区别的。
例如,GuanIndex数据集对应的是我们的Spark计算引擎,而SQLServer之前数据集对应客户的SQLServer数据库。请根据对应的数据库编辑合适的SQL过滤条件。
不可以在api上传时指定。默认存放在根目录下,上传成功后可自行移动存放。
问题表象:在数据集”更新“预览里也能看到新增列,但是概览页面没有,每天定时抽取的数据集中也没有新增列;
【原因】:建立数据集时有过关联数据和重命名,但是用户没有对新增列进行过重命名,说明数据模型没有更新过,还是原来的数据模型结构。
【解决方案】:点击“模型结构” -- “编辑” -- 检查是否需要编辑 SQL语句 -- 预览 -- 确定;在“字段关联确认”弹出框里,检查原来的字段关联(重命名信息),点击“确定”,就能看到新增列字段名,进行重命名,点击“下一步”后数据集会直接更新。
1)替换数据分两种:
a. 替换数据之前的字段原来就存在的,当你替换数据,上传数据集的时候,它就是按照之前你要替换的这个字段的位置,弹出替换数据的框,并不会按照你上传数据的excel的顺序来。
b. 替换数据的时候字段不存在,那么新增的这列就会在后面。
2)追加数据:追加的数据的话是在现有列的字段下增加数据行。
要看原本的数据是什么情况。
1)覆盖的话当前SQL的执行结果将替换原有数据,所有历史数据将会被清空。
2)如果是增量更新,前历史有一些数据,数据库中已经不存在了,选择覆盖就会丢失。
3)如果是当前执行的sql更新后就是您这边所需的所有数据,是可以覆盖的。
【可能的原因】:选择为去重主键的字段可能含有null值,对null值无法判断是否是重复所以都会保留下来,导致数据量会膨胀。
【建议】含有null值的字段一定不能作为去重主键,无论是手工表追加数据还是数据集增量更新主键去重。
1)在上传时选择Excel文件类型时,无法上传excel的压缩文件。
2)上传时选择CSV的文件类型时,选择文件时可以选择excel的压缩文件,但是会提示上传失败。可以上传成功csv的压缩文件,CSV支持上传压缩包(zip文件),并支持自动解析。
1)采用手工表创建数据集,数据字段名称不可修改
2)数据库创建数据集支持字段重命名
自动的定时更新一天最多4次,可根据业务需求,设置数据集的更新频率。
若实时性要求更高(如15分钟看一次数据),可以考虑用直连,实时性比较高,但是需要注意ETL无法使用。
如果过于频繁更新数据集,可能会存在以下风险:
(1)数据质量:频繁更新数据可能导致数据质量下降,短时间内进行大量的数据更新,可能会导致数据出现错误或缺失,需确保数据的准确性和完整性;
(2)系统性能:频繁更新数据可能会对系统性能产生负面影响,每次更新都需要消耗系统资源。如果更新频率过高,可能会导致系统运行缓慢,甚至崩溃,要评估系统的性能和资源消耗情况;
(3)数据库自身压力:频繁更新数据会消耗大量数据库的计算资源、计算时间、响应时间,要减轻对数据库的压力,进而减轻对系统整体的影响。
18. 直连和guan_index抽取的区别?
1)直连一般是直接查数据库的,guan_index也就是抽取的话是先把数据从数据库抽到BI平台上,再直接在BI上进行处理和计算。
2)直连的数据集的卡片再去写函数进行计算时是直接用对应数据库的语法,抽取的话要用spqrk语法。
直连不能用ETL。
1)直连一般都是直接去查数据库的,但每次都去查库的话,数据库压力会很大,所以我们有缓存的机制。
2)缓存的机制是在卡片有相同的查询sql,且缓存版本没有过期的情况下,才可能命中缓存。
3)url触发只是一种外部触发更新的机制。不论是哪种更新方式触发的更新,数据集更新的话就会刷新缓存的版本号。
4)对实时性要求比较高的话,可以勾选上支持实时卡片数据。选择支持实时卡片的情况下,如果需要减少一部分数据库压力,可以调整一下默认缓存有效时间。
跨数据账户的表无法直难找这个方式关联,建议使用ETL进行表关联。
相同数据账户跨库的表可以实现关联,跨数据账户不可以。
例如:删除csv数据集中的多余数据列,进行了替换数据的操作,在相应的数据表中删除了之前数据集中的多余列,替换这以后该列仍旧存在,内容全部为null。
【原因】:原来存在的数值列不会被直接删除,替换新的表之后如果设置了关联,原来的列就会直接被新的关联字段取代,但如果没有关联的话,他还会在那里,然后会变成null值。
考虑到该字段可能在卡片里被引用过,如果直接删除的的话,卡片里结构就会出错。
例如场景:
目前有张不到100万条记录的数据集查询超过10秒,数据集SQL在大数平台查询不到1秒,观远里加了几十个同比计算字段,用了sum等函数;
数据应该是使用直连数据集,时间方面包涵三部分:去数据库中取数,在BI里计算(比如加了几十个同比计算字段,用了sum等函数)的时间,再加卡片样式的渲染时间。
假如将复杂计算放在sql里,那么在数据库中取数的过程时间就会延长,想要根本解决这个问题的话这个要在这边最底层数仓中将这些复杂计算的指标提前就算好,这边直接取数操作。(有点此消彼长)
数据集的模型结构中可以查看数据集的sql信息,这里能看出是用来数据集是用的哪张表。
批量可以通过api获取,数据集对应的数据库表要看相当于是看数据集的query信息,方法可以参考:
更新方式到数据集更新页面可以看到的,只要没有勾选增量更新,SQL 语句里没有限定时间条件,那就是全量更新的。
若全量更新:需要注意⚠️客户方ERP里数据结构没变的话会更新到,万一字段名称或者数量变动了,那改动部分就更新不到;
全量更新只是基于原来已经抽取到的字段来全量更新,新加的列不会自动更新;
(1)如果字段有变动,需要重新更新。
(2)如果没有字段更新,只有内容的话不需要重新更新;
只读用户只支持导出excel,不支持导出csv,另外, 普通用户和所有者的直连和实时数据集的卡片也是只能导出excel
数据集详情页本身就是要展示完整数据结构的, 如果隐藏了,那有信息不对称问题(上面写着10列,下面因为没有列权限,只能看到5列,那更容易造成误解,以为系统有bug),如果是做成表格卡片,那么如果没有这列的列权限,该列字段会隐藏,所以,实际使用起来 是不影响的。
【原因】勾选了“支持实时卡片数据”,但页面上没有打开“实时数据”开关,如果没有访问页面,页面数据是不会更新的,也就不会触发预警。
支持,可以在“管理员设置/系统设置/高级设置/是否允许数据集另存为”打开开关
【可能原因】:主键里是否有大量是null的行,如果去重主键有null并且该列是数值类型的话,会把所有null的行丢掉,导致数据变少。
【解决方案】:建议先把null处理掉再抽取,或者全量更新。
同个文件夹下是不支持相同名称的数据集上传的,不同文件夹下是允许两个相同名称的数据集存在的。
不能;
【原因】:由于IF嵌套时间复杂度太高,是幂次增长的,如果在预览界面使用了多个嵌套IF的sql,很有可能会导致预览超时。
【解决方案】:建议使用case when替代IF嵌套函数。
ETL自动任务默认并发为1;数据集自动任务为4;卡片并发:抽取默认并发为10,直连无限制;
这是默认情况下的设置,如果您之前申请调整过并发数,那以实际修改后的数值为准,如果想调整并发数,可以反馈给售后支持同学,待研发和运维评估后操作执行修改,该参数不支持客户自定义修改。
这种一般都是有大的任务在运行,堵住了其他任务,您可以看下任务管理页面,看下运行时间最长的任务是什么,取消运行时间最长的任务后系统一般会自动恢复。
建议从以下两方面进行排查:
1)数据集上有没有设置筛选条件进行过滤;
2)数据集的数据权限模块,是不是设置了权限管控,开启了行权限,您有权限查看的数据是0行;
3)如果开启了行/列权限,并且打开了是否对数据集所有者和管理员生效了的开关,那么即使是管理员,没有行列权限,也是看不到数据的。
视图数据集的更新主要是指更新模型结构sql,上游数据集更新了,数据视图也会更新。
前提:数据集a创建了卡片b,根据卡片b创建了卡片数据集c
1)关于卡片数据集的结构
如果卡片b修改,卡片数据集c不会自动同步,需要手动更新才会同步
2)关于卡片数据集的数据内容
原始数据集a更新,会触发卡片数据集c 的数据更新
1)直连数据库的实时卡片数据是准实时
选择“支持实时卡片数据”,数据集缓存有效时间支持无缓存,可达到页面卡片数据准实时的效果。但这种处理方式对业务库会造成较大压力,且无法实现多源数据融合。

2)付费模块的实时数据是Lambda架构,并且可以支持简单的同环比等预制的计算
将历史数据与实时数据进行分开处理,既能够实现多源数据的融合,又可以支持增量更新且占用较少的计算资源。
从操作层面来说,观远自带的“直连数据“配置比较方便,付费的“实时数据”模块会有一定的学习成本。
【原因】"batchFinish": false /* 可选,默认为false,分批上传时,表示是否是最后一批。设置为false时,不更新行数,也不刷新card缓存 */
【解决方案】请求参数中加上"batchFinish": true 即可,不加默认不更新。
【原因】原来建立数据集时有过关联数据和重命名。但是没有对新增列进行过重命名,说明数据模型没有更新过,还是原来的数据模型结构。
【解决方案】:
1)点击“模型结构” -- “编辑” -- 检查是否需要编辑 SQL语句 -- 预览 -- 确定;
2)在“字段关联确认”弹出框里,检查原来的字段关联(重命名信息),点击“确定”,就能看到新增列字段名,进行重命名,点击“下一步”后数据集会直接更新。
3)查看“概览”页面,可以看到新增列已经有了。如果此数据集用于 ETL,检查并在 ETL 步骤里勾选新增列,重新运行 ETL,新增列就可以添加到输出数据集里。
【原因】在数据结构中有对字段进行重命名。
【解决方案】:
1)【推荐】在数据结构中对字段进行重命名/或者是改为空(默认是模型结构语句中的字段命名)
2)在修改完模型结构后,在关联弹窗中选择“无关联”,然后在下一个弹窗中对字段进行重命名。

增量更新的前提条件:
数据源(数据库)中存储了每条记录的创建时间或者更新时间;
有不重复的主键列。
1)未设置去重主键时
添加新数据:增量更新抽取到的数据会全部作为新增数据。
覆盖旧数据:会清空原有的数据,更新后的数据即为增量更新语句查询到的数据。
2)设置了去重主键时
添加新数据:增量更新抽取到的数据若与已存在的数据主键重复,则增量更新抽取到的数据会进行覆盖。其他抽取到的数据作为新增数据。
覆盖旧数据:会清空原有的数据,更新后的数据即为增量更新语句查询到的数据。
目前新建数据集中,Excel(xlsx)文件大小不能超过100M, xls等老版本Excel文件大小不能超过5M(同时最大行数不得超过1048576行数据);CSV文件(可压缩成zip)文件大小不能超过100M 。
etl数据集的字段名称和类型需要修改时,建议直接在ETL内编辑;可以新建计算字段/分组字段,新建的字段可以编辑。