Dataphin PyODPS

Dataphin PyODPS是基于MaxCompute PyODPS开发的Dataphin Python版本的SDK。在Dataphin中使用Python时,您可以使用Dataphin PyODPS安全地访问Dataphin项目内存储在MaxCompute的数据。

背景信息

Dataphin PyODPS依赖于MaxCompute的 PyODPS

前提条件

在使用Dataphin PyODPS前,请确认您已将Dataphin计算引擎设置为MaxCompute。具体操作请参见使用MaxCompute作为元仓计算引擎进行元仓初始化

使用限制

仅计算引擎为MaxCompute的Dataphin支持Dataphin PyODPS。

获取待操作数据对象的权限

使用说明

Dataphin PyODPS安装包已内置在Dataphin中,您可以在Dataphin中直接调用。详细说明如下:

  • 当前,Dataphin支持的PyODPS包括项目空间资源函数。MaxCompute的其他PyODPS暂时不支持直接在Dataphin上调用。

  • 在Dataphin上调用PyODPS时,与直接在MaxCompute上调用,命令执行上基本一致。详细说明如下表所示。

    PyODPS

    是否一致

    备注

    SQL

    不一致

    在Dataphin中使用PyODPS访问项目内的表时,需要在表名称前加项目或业务板块的信息,详细说明如下:

    • 访问物理表的SQL语句格式为${Dataphin项目英文名}.物理表名

      例如,Dataphin中有项目ProjectA,则Dataphin自动生成项目变量${ProjectA}。ProjectA内有一张物理表TableA,则您可以使用${ProjectA}.TableA来引用这张表。动态变量${ProjectA}在开发环境执行时默认被替换为Project A_dev,在生产环境执行时默认被替换为ProjectA。当然您也可以直接指定开发项目(ProjectA_dev)或生产项目(ProjectA)。

    • 访问逻辑表的SQL语句格式为${Dataphin业务板块英文名}.逻辑表名

      例如,Dataphin中有业务板块LD_BizUnitA,则Dataphin自动生成业务板块变量${LD_BizUnit A}。业务板块LD_BizUnitA内有一张逻辑表DimTableA。您可以使用${LD_BizUnitA}.DimTableA来引用这张表,该变量在开发环境执行时默认被替换为LD_BizUnitA_dev,在生产环境执行时默认被替换为LD_BizUnitA。当然您也可以直接指定开发项目(LD_BizUnitA_dev)或生产项目(LD_BizUnitA)。

    一致

    不支持跨Dataphin项目访问存储在MaxCompute的数据对象,也就是支持访问当前Python任务所在的Dataphin项目内存储在MaxCompute的数据对象。

    例如,当前Python任务所在的项目英文名为ProjectB,如果您执行odps.get_project(‘Test_Project'),则会报以下错误。

    Exception: Dataphin odps client auth check failed, not allow to operate project Test_Project

    项目空间

    资源

    函数

操作过程中有无权限的报错时,您需要获取对应数据对象的权限。具体操作,请参见获取待操作数据对象的权限

使用示例

from dataphin import odps
odps.execute_sql("select * from ${[业务板块]}.[逻辑表名]")