[docs]@classmethoddeffrom_params(cls,endpoint:str,project:str,*,access_id:Optional[str]=None,secret_access_key:Optional[str]=None,)->MaxComputeAPIWrapper:"""Convenience constructor that builds the odsp.ODPS MaxCompute client from given parameters. Args: endpoint: MaxCompute endpoint. project: A project is a basic organizational unit of MaxCompute, which is similar to a database. access_id: MaxCompute access ID. Should be passed in directly or set as the environment variable `MAX_COMPUTE_ACCESS_ID`. secret_access_key: MaxCompute secret access key. Should be passed in directly or set as the environment variable `MAX_COMPUTE_SECRET_ACCESS_KEY`. """try:fromodpsimportODPSexceptImportErrorasex:raiseImportError("Could not import pyodps python package. ""Please install it with `pip install pyodps` or refer to ""https://pyodps.readthedocs.io/.")fromexaccess_id=access_idorget_from_env("access_id","MAX_COMPUTE_ACCESS_ID")secret_access_key=secret_access_keyorget_from_env("secret_access_key","MAX_COMPUTE_SECRET_ACCESS_KEY")client=ODPS(access_id=access_id,secret_access_key=secret_access_key,project=project,endpoint=endpoint,)ifnotclient.exist_project(project):raiseValueError(f'The project "{project}" does not exist.')returncls(client)
[docs]deflazy_query(self,query:str)->Iterator[dict]:# Execute SQL query.withself.client.execute_sql(query).open_reader()asreader:ifreader.count==0:raiseValueError("Table contains no data.")forrecordinreader:yield{k:vfork,vinrecord}