我想将 Pandas 数据框作为表格数据集注册到 Azure Blob 存储中。我不想每次注册该数据集的新版本时都创建唯一的路径。其次,每当我上传数据集时,我需要指定取决于日期的路径。例如。如果我今天上传,路径应该是
'data/{}'.format(current_date)
下面是我用来满足这两个要求的代码。
dataset = Dataset.Tabular.register_pandas_dataframe(
dataframe=df,
target=(ws.get_default_datastore(), 'data/{}'.format(current_date)),
name='test dataset',
description='test dataset',
make_target_path_unique = False
)
target
参数应该为每一天创建一个唯一的文件夹。 make_target_path_unique
将停止创建随机存储 URI 路径。
上面的代码失败了
TypeError: register_pandas_dataframe() got an unexpected keyword argument 'make_target_path_unique'
我不希望存储 URI 在注册该数据集的另一个版本时随机更改。例如。在
https://xxxx.blob.core.windows.net/azureml-blobstore-xxx/managed-dataset/xxxx/
最后 4 个 xxxx
随机变化。我该如何解决这个问题?
您使用 python sdk v2,您需要传递数据的路径。
在这里,我的想法是将 pandas 数据框保存到 csv 文件,并以当前日期作为文件夹名称,然后传递该通道以创建数据资产。
保存数据框。
import os
os.mkdir(current_date)
df.to_csv(f"./{current_date}/data.csv")
接下来创建数据资产。
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
my_data = Data(
path=f"./{current_date}",
type=AssetTypes.URI_FOLDER,
description="csvs",
name="pandas_data",
version="1",
)
dataref = ml_client.data.create_or_update(my_data)
dataref.path
输出:
在这里,您将获得每天和每次数据更改的唯一路径。
注意:不要在本地保存数据帧,而是将其保存在与 ml 工作区关联的存储帐户中。请参阅此堆栈解决方案了解更多信息。