跳转到内容

归档项目

项目通常包含关键的流程和逻辑,因此归档非常重要。如果您需要将项目恢复到某个特定状态,归档必不可少。

PlaidCloud 允许您在任意时间点归档项目。创建归档是对 PlaidCloud 内置时间点跟踪的补充,可以捕获特定的时间点。这在重大变更之前,或需要留存生产环境的确切状态时尤其有用。

完整备份:包含项目中的所有数据表。根据项目中的数据量,归档可能相当大。

部分备份: 当项目的所有数据都可以从其他来源派生时可以使用。在这种情况下,不必归档项目中的数据,数据仍保留在别处。部分归档可以节省创建归档的时间和存储空间。

归档项目的步骤:

  1. 打开 Analyze
  2. 选择“项目”选项卡
  3. 选择项目,然后从操作菜单中选择导出项目归档(或右键单击项目并选择导出项目归档)

窗口的标题栏会显示将要归档的项目名称,以便您在开始之前确认选对了项目。

PlaidCloud 接受请求后,导出窗口会立即关闭,随后会有一个进度窗口跟踪归档的进展。您可以保持该进度窗口打开以观察进度,也可以将其转入后台继续工作;无论哪种方式,归档都在平台上运行,关闭进度窗口不会使其停止。

归档结束时会有通知告诉您结果:归档已写入、哪些表在没有数据的情况下被写入,或者在失败时说明原因。您无需一直保持窗口打开即可收到通知。

有时项目中列出的某个表背后已经没有任何数据,例如从未构建过的表,或其数据在项目之外被删除的表。归档仍会写入:这些表不会出现在表数据中,导出完成时会有一条消息指出它们的名称。其他所有内容(项目配置、工作流、表定义以及其他每个表的数据)都会照常归档。

归档会记录哪些表是在没有数据的情况下写入的,还原时也会在还原结束时再次指出这些表,而不是将它们当作完整的表呈现。定义仍可读取的表会恢复为有列但没有行;连定义也已丢失的表则会恢复为一个没有实际表支撑的条目。重新运行构建该表的工作流即可填充数据。

读取项目的表与读取项目本身是两项独立的权限,归档同时依赖这两者。如果您可以打开项目但没有表读取权限,归档仍会写入,只是不包含表数据,也不包含表定义,因为两者都受同一权限控制。导出完成时会有一条消息,指出被排除的表,这些表以其内部 id 而非名称标识,因为名称来自归档未包含的定义。

以这种方式获得的归档是项目配置(其工作流、变量、维度、视图和布局,范围限于您有权读取的部分)的副本,而不是数据的副本。还原它完全不会重新创建任何表,因此它不能作为可用于重建项目数据的备份。依赖这类归档之前,请先查看导出消息。

与上文所述的表不同,重新运行工作流无法纠正这种情况,因为数据从一开始就没有被读取。请让工作区管理员授予您项目表的读取权限,然后重新创建归档。

创建归档会读取项目的表,因此行访问与对其他读取操作一样适用。在每个管控列上,归档包含您所在分组被授予的行。如果您在某列上没有任何授权,结果取决于该列的声明方式:默认拒绝的列不会给您任何行,声明为默认允许全部的列则不会对该列进行筛选。不包含任何管控列的表会被完整归档,项目架构师则会归档所有行,无论授权如何设置。计划归档以项目自身的身份而非您的身份运行,因此会归档所有行。

仅持有部分授权的成员所创建的归档,只是项目数据的部分副本,而默认拒绝的列意味着表还原后可能为空,而不仅仅是被缩小范围。还原这样的归档会重建缺少这些行的项目,且还原过程中不会有任何提示,因为就归档而言,这些行从来就不存在。

现在,导出失败时会报告失败。以前,归档可能在尚未写入的情况下就报告已完成,让您事后(通常是在还原时)才发现文件缺失。现在失败的导出会如实说明,因此可以放心地将报告的成功视为真正的成功,并在任何报告错误的情况下查看消息。这同样适用于其他导出类型,而不仅限于项目归档。

获得归档后,您可能需要还原它。您可以将归档还原到新项目,也可以还原到现有项目。

还原归档的步骤:

  1. 打开 Analyze
  2. 选择“项目”选项卡
  3. 从操作菜单(或工具栏)中选择导入项目归档,然后选择要还原的归档
  4. 选择是创建新项目还是导入到现有项目,并从选择树中选择要带入的内容
  5. 点击导入项目

导入在后台运行。进度窗口会显示当前进展,完成时会有消息通知您,如果有内容被遗漏,还会发送电子邮件。如果导入无法启动(例如所选项目已被锁定),窗口会保持打开并告诉您原因。

归档在打开时会受到检查。如果其中包含项目归档永远不会有的内容(例如会落在归档自身文件夹之外的文件、指向归档之外的链接,或试图创建纯数据以外任何内容的设置),则在还原任何内容之前就会被拒绝。

您不必带入整个归档。选择树按类型列出归档所包含的内容(工作流、步骤、表、维度、数据编辑器、用户定义函数),您勾选的任何内容都会连同其依赖项一起带入。

当归档的某些部分无法还原时,导入仍会继续。只要归档可以读取且项目本身可以设置,项目就会被导入,无法还原的内容会列在其导入结果中。如果归档无法读取,或项目本身无法设置,导入就会失败并告诉您原因,新建的项目也会被移除。导入到现有项目的操作也可能在完成之前停止。已还原的内容会保留在项目中。消息和电子邮件会说明导入已停止,导入结果则会说明停止的时间和原因,并列出在此之前无法还原的内容。

有任何内容被遗漏时,导入结束时的消息和电子邮件会予以说明,消息中还带有指向导入结果窗口的链接。该窗口按类型和名称列出每个项目,给出原因,并将这些项目归入以下几个标题:

  • 未导入 — 该项目不在项目中。
  • 已创建但无数据 — 表、视图或维度已在项目中,但由于其数据无法读取或加载而不含数据。
  • 警告 — 该项目已导入,但有需要检查的地方,例如仓库已将某些列转换为表的列类型。
  • 保留了此项目值的变量 — 项目中已存在同名变量,因此保留了它自己的值。

最严重的项目排在最前,当项目多于列出的数量时,窗口也会说明。若要稍后再次打开该窗口,请在项目选项卡上选择该项目,然后从操作菜单中选择查看导入或复制结果,或右键单击该项目。

该结果会一直保留在项目上,直到有人将其忽略,或同一项目的后续导入将其替换。点击忽略结果可为所有能打开该项目的人移除它;项目本身不会有任何更改。忽略结果需要具有项目的编辑权限,并且项目不能处于锁定状态。

导入到已存在的项目是向其添加内容,而不是替换。当归档和项目都包含同一项目时,有两点决定会发生什么。

您需要能够更改目标项目。 如果您在目标项目上没有任何角色,或该项目已被锁定以防止更改,则导入会被拒绝;这会在读取或写入任何内容之前检查,因此被拒绝的导入不会触动项目。

项目保留自己的设置。 其名称、标识符、数据连接环境、存储默认值、文档账户、访问类型、访问列表和行访问授权都保持不变。只会带入您所选的内容。

设置为项目默认的步骤带入的是该设置而不是某个账户:还原后,它会解析为项目当前拥有的默认值,而不是归档时所用的默认值。

当传入项目与项目中已有的某个项目是同一项时,您可以选择如何处理:

  • 用传入数据覆盖重复项 — 归档中的版本会替换项目中的版本。
  • 创建重复项的新副本 — 项目保留现有内容,传入的项目会添加在旁边,其名称后附加 copy(如果该名称也已被占用,则再加一个计数)。这适用于工作流、步骤、表、维度、数据编辑器、视图和用户定义函数。

项目变量和工作流变量是例外。 变量由名称标识,因此如果不把它重命名为没有任何内容引用的名称,就无法再添加第二个副本。如果项目已定义了归档也包含的变量,则保留项目自己的值,导入结果会列出未改动的变量。如果您想使用归档中的值,请随后在该变量上进行设置。

需要了解的是:这种匹配依据的是身份,而不是名称。来自同一原始项目的项目(即归档所导出自的任何内容,或其副本)会被识别为同一项目。仅仅碰巧同名的两个项目会被视为不同的项目,导入后两者都会存在。

还原表的数据取决于其列是否与要导入的表对齐,即名称相同且顺序相同,因为加载就是按此进行的。如果它们没有对齐,该表的数据会被舍弃,该表会列在导入结果的已创建但无数据下,与归档中没有数据的表情况相同。仅列的存储类型不同不会阻止数据加载:数据会被加载,该表会列在警告下,并附上仓库转换过的列。

如果导入中所有表都未能加载数据,项目仍会保留。其结束消息和导入结果都会说明无法加载任何表数据。如果导入完成后所有工作流、表和维度都已就位,请先阅读其结束消息,再假定行也一并带入。

归档还可以用作项目的定期备份。PlaidCloud 允许您管理备份计划,并将备份归档的保留期设置为最方便或最理想的时长。

由于对项目的所有更改都会被自动跟踪,因此回滚并不需要归档。不过,归档确实提供了项目状态的特定快照,这通常有助于管控,也便于恢复到已知的时间点。

设置归档计划的步骤:

  1. 打开 Analyze
  2. 选择“项目”选项卡
  3. 点击备份图标
  4. 在文档账户中选择目录目标位置
  5. 选择备份频率和保留期
  6. 选择要备份的项目
  7. 点击“更新”