元数据仓库共享模型标准访问方式

元数据共享模型是一系列元数据相关的物理表,基于Dataphin的系统元数据和相应计算引擎的元数据加工汇总而成,存储在Dataphin元仓租户下的元仓项目中, 产出时效为T+1。若您需访问元仓共享模型,可以通过集成任务将元仓中所需的元仓共享模型的数据表从元仓租户的计算源同步到开发使用的业务租户的计算源中。本文将指导您如何进行配置。

操作步骤

  1. 创建元仓项目数据源。

    在业务租户中,将元仓项目的计算源创建为对应的数据源,以作为元数据共享模型集成任务的输入组件。如元仓项目的计算源为MaxCompute,则在业务租户中创建元仓项目的MaxCompute数据源。

  2. 检查最新数据是否产出。

    您可以通过元仓共享模型通信表以检查最新数据是否产出,每天元仓共享模型产出后,将更新通信表数据。通信表说明如下:

    • data_share_finish:基础元数据模型通信表。

    • data_security_finish: 数据安全模块共享模型通信表。

    • data_service_finish: 数据服务模块共享模型通信表。

    重要

    部分共享模型表和是否购买对应增值模块有关,如数据安全相关数据表。如果未购买对应功能模块,相关表将没有数据产出,此时不会产出对应通信表。

  3. 创建集成任务。

    将元仓任务计算源对应的数据源配置为输入组件,将目标空间项目配置为输出组件,选择需要使用的元数据表,完成集成任务的配置。

  4. 集成任务调度配置。

    • 您可以直接将集成任务配置为定时调度,可以查看元仓租户下共享模型任务的平均产出时间作为配置依据。为了方便统一调整起调时间,可以给所有相关的集成任务配置一个统一的VIRTUAL(虚拟)任务节点为上游依赖,通过调整VIRTUAL(虚拟)任务节点的定时调度时间来控制整体集成任务的运行。具体操作,请参见创建检查任务

    • 如果您希望保证使用最新数据并可以及时获取数据产出通知,可以创建检查任务(如PyODPS任务),并直接将检查任务配置为所有的集成任务的上游,检查任务检查到共享模型数据表更新后会变成运行成功,成功后可触发下游集成任务的调度。具体操作,请参见创建检查任务

创建VIRTUAL(虚拟)任务节点

  1. 在需要获取元数据的Dataphin项目空间中创建定时VIRTUAL(虚拟)任务节点。

    1. 在Dataphin首页,单击顶部菜单栏研发。默认进入数据开发页面。

    2. 选择获取元数据的Dataphin项目空间,并依次单击计算任务->image图标->VIRTUAL计算任务。

      image

  2. 添加VIRTUAL(虚拟)任务节点上游依赖为根节点并设置运行时间。如:凌晨3点半。

    image..png

    说明

    通常情况下,计算资源充足时元仓任务可在凌晨2点钟之前运行完成。

  3. 将创建的集成任务节点依赖于创建的虚拟任务节点。

创建检查任务节点

下文以MaxCompute计算引擎为例,通过创建PyODPS任务方式进行检查。若您使用的是其他计算引擎可以通过创建Shell、Python等脚本任务进行实现。

  1. 在需要输出元数据的Dataphin项目空间中创建PyODPS任务(非元仓项目空间)。

    开发PyODPS任务,请参见PyODPS

  2. 在PyODPS任务中编写检查代码。参数代码如下:

    #!/usr/bin/env python
    import time
    from odps import ODPS
    table_list = ['data_share_finish','data_security_finish','data_service_finish','data_quality_finish','data_standard_finish']
    
    o = ODPS('**your-access-id**', '**your-secret-access-key**', '**your-default-project**',endpoint='**your-end-point**')
    success = False
    ds = '${bizdate}'
    sleepTime = 15
    ready_table_list = []
    for i in range(1, 2000):
        for t in table_list:
            table = o.get_table(t)
            if table.exist_partition('ds=%s' % ds):
                success = True
                table_list.remove(t)
                ready_table_list.append(t)
                break
            else:
                print ('sleep %ds,table %s partition %s is not ready' % (sleepTime, t, ds))
                time.sleep(sleepTime)
    if not success:
        raise Exception('partition is not ready')  
    else:
        print ('all meta table %s partition is ready' % (','.join(ready_table_list)))
    说明
    • 以上代码将轮询检查元仓项目空间中的通信表是否更新对应业务日期的数据,若需检查所需表您可修改为对应表。

    • 代码中元仓项目空间的计算源信息您可咨询部署Dataphin实例运维工程师或相关开发负责人获取。包括MaxCompute的project和对应ak,及endpoint。

  3. 将创建的集成任务节点依赖于创建的检查任务节点。

后续步骤

  • 如果您的开发模式是Dev-Prod模式,则需要发布任务,详情请参见管理发布任务

  • 如果您的开发模式是Basic模式,则提交成功后的任务,即可参与生产环境的调度。您可前往运维中心查看您发布的任务。详情请参见运维中心概述