将指定飞书表格中的一个sheet(电子表格)同步至Hive中,以便进行后续的离线分析。
示例任务请见下图:
飞书表格
通过在飞书云文档右上角点击『 新建 』按钮,选择『 新建表格 』,创建出来的表格云文档。如下图所示:
特别注意: 在普通云文档中插入的表格(如下图所示),不属于『 飞书表格 』,不能使用本通道进行导出Hive。
sheet
每个飞书表格可以包含一个或者多个sheet,本通道要导出的单位为 sheet , 如果你的表格包含多个sheet,且均需要导出至Hive,则需要配置多个『LarkSheet->Hive』通道任务。
如下图所示,该表格包含2个sheet:
sheetId
用来在同一个飞书表格中唯一标识一张sheet。当飞书表格存在多个sheet时,点击不同的sheet,在浏览器地址栏会显示出不同的sheetId。如上图所示,sheet1的sheetId为:6471d5
特别注意: 当表格存在多张sheet, 一定要提供带有sheetId的表格链接 ,才能让DataLeap精确定位到要导出哪一张sheet。如不提供sheetId,默认导出第一张sheet
表格owner
拥有对表格的所有权限,可以点击表格右上角『 ··· 』,选择『 文档信息 』查看表格owner。如下所示:
表格协作者
拥有对表格的部分权限,如阅读或者编辑。可以从表格右上角『 分享 』按钮来查看协作者,协作者可以有用户和群聊两种。
表头
飞书表格没有表头的概念,但为了『LarkSheet->Hive』通道任务具有更好的规范性,我们约定:
sheet的第一行会作为表头 。 表头需要是:从A1单元格开始的、连续的、非空的、不能重名的一系列单元格。 表头只用于做字段映射,不会参与数据传输。
特别注意: 在任务正常上线后,需要保证表头的稳定,不要轻易修改表头。任务实例执行前会进行表头校验,如出现坏表头或者跟dorado字段映射对不齐,则会主动报错。
比如表头行数据如下:
非法表头(D列为空)
A | B | C | D | E | F | |
1 | 姓名 | 年龄 | 爱好 | 学校 |
非法表头(A列为空)
A | B | C | D | E | F | |
1 | 姓名 | 年龄 | 爱好 | 学校 |
非法表头(B、D列名重复,均为“爱好”)
A | B | C | D | E | F | |
1 | 姓名 | 爱好 | 年龄 | 爱好 |
以下是一个合法的表头(ABCD四列可以导入到hive)
A | B | C | D | E | F | |
1 | 姓名 | 年龄 | 爱好 | 学校 |
要顺利使用『LarkSheet->Hive』通道功能,需要『 表格owner 』主动将文档分享『 DTS机器人 』。
注意:一定得是表格owner,才有权限进行分享,表格协作者无法进行此操作。
具体分享步骤如下:
点击表格右上角『 ··· 』设置按钮,在弹出的面板中,选择『更多』,接着选择『添加文档应用』
在弹出的面板中,找到『 DTS机器人 』应用,或者直接输入“DTS机器人”进行搜索,在结果中点击『 DTS机器人 』
点击『 DTS机器人 』之后,在右边选择你要授予的权限,我们选择『 可阅读 』即可。之后点击右下角『 添加 』按钮,即完成了将该表格分享给『 DTS机器人 』。
数据开发产品通过表格的协作者列表来作为鉴权。这意味着如果您不在表格的协作者列表(以群聊方式出现在协作者列表里不算),则不能进行任务创建、任务调试、任务上线等操作。 特别的,如果您是表格owner,表格owner已经是协作者,因此不需要此步骤。
如果您不是表格owner,则需要您成为表格的协作者,需要让表格owner主动添加您为协作者。操作步骤如下图所示:
如果是从群聊中获取的表格权限,则你本身并不会出现在协作者列表,协作者列表中仅仅是该群聊,目前飞书Open API暂不支持群聊鉴权的打平,因此如果你是在群聊中的协作者,则无法通过DataLeap鉴权。
由于目前表格无schema等强约束,因此为了保证导数的完整性,要求待导入的hive字段只能为string字段,因此字段映射时只能选择string类型的字段。
由于飞书表格存在大小限制(不能超过100万单元格),因此整体数据量不会很大, 推荐使用默认设置即可 ,您无需关心高级参数设置 。
如果您确实有性能上的需求,想让导数更快,则可开启高级参数设置,并设置以下几个参数:
读入并发度:默认为1,对于绝大多数任务1就足够了,最高不能超过5。
job.reader.batch_size:从飞书open api单次获取的行数,默认为1000行,不能超过5000。调高此值,可以带来导数效率的提升。
调度设置
运行监控(报警)设置
历史版本
任务常用操作
因飞书表格改动成本较低,很有可能出现表头行被修改。任务上线后,请务必保证表头与任务配置保持一致,如果发生表头的变化,请到Dorado上重新进行字段映射并上线,否则任务可能会失败。
为保证数据的正确性及可解释性,表格中不要出现合并单元格。
可以选择性地只导入飞书的部分列吗?
A:可以的 ,可以在字段映射中删除部分列。
飞书表头字段有啥特殊限制吗?
A:前后不要出现空格、制表符等不可见字符。
为什么字段映射时选不了hive某些字段?
A:请先确认该字段是否真实存在,再确认该字段是否为string类型。
目前支持公式的导入吗?
A:已支持,默认开启 。
点击表格分享,看不到『设置』按钮
A:只有表格owner才能进行设置,意味着只有表格owner才能将文档分享给『DTS机器人』
怎么在浏览器地址栏看不到sheetId啊?
A:如果你的表格只包含1个sheet,则地址中并不会出现sheetId,此时dorado任务飞书链接也不需要sheetId。 如果包含多个sheet,可以点击不同的sheet,浏览器地址栏会出现sheetId
如果在飞书里新增了字段,不管字段的顺序加在哪里,都可以正常导入hive表,并且不会影响现有已经导入飞书的字段吧?
A:不会,以任务配置的字段映射为准。举个例子,在不改字段名的前提下,Dorado 只校验飞书表格里的字段名,不看这个字段具体在哪一列,即使后面移动了顺序,也能保证正常导入进来。
导入的字段不是纯文本,该怎么解决?
A:比如导入后的字段变成下图这种:
在任务的高级参数设置中,新增一个高级参数: job.reader.lark.valueRenderOption=ToString 。如下图所示: