【问题标题】:how to apply schema of one dataframe to another empty dataframe using rest call如何使用休息调用将一个数据帧的模式应用于另一个空数据帧
【发布时间】:2021-05-04 20:56:27
【问题描述】:

我在铸造厂有两个数据集: df1 & df2, df1 包含带有架构的数据。

df2 是未应用架构的空数据框。

使用数据代理我能够从 df1 中提取架构

{
  "foundrySchema": {
    "fieldSchemaList": [
      {...

 }
    ],
    "primaryKey": null,
    "dataFrameReaderClass": "n/a",
    "customMetadata": {}
  },
  "rows": []
}

如何通过 rest 调用将此模式应用于空数据帧 df2?

以下代工厂示例显示了如何提交空事务, 此示例未显示如何应用架构

curl -X POST \
  -H "Authorization: Bearer ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{}' \
  "${CATALOG_URL}/api/catalog/datasets/${DATASET_RID}/transactions/${TRANSACTION_RID}/commit"

【问题讨论】:

  • 如果您正在谈论在代码存储库中的数据帧之间复制模式,那么这更像是一个 pyspark 或 spark 问题。但是然后你说你不想构建它,使问题变得模棱两可。你能否提供更多关于你正在尝试做的事情的细节?
  • 嗨@fmsf,谢谢您的回复,我正在物化 cdc 数据集,我有快照数据集,其中没有交易数据集,现在我正在创建空交易数据集,然后手动应用模式从快照数据集到要实现数据集的事务数据集,大约有 90 个快照表没有相应的事务表,我正在研究自动化这个手动过程,可能是在 python 休息调用中,或者如果你有任何建议,感谢
  • @fmsf,我能够使用 foundry-data-proxy 用于快照数据集的 rest api 获取架构,如何使用 rest 调用更新空事务数据集的架构?
  • 我已修改问题以添加更多细节
  • 谢谢你,同时你似乎从@nicornk(ty)那里得到了你想要的东西

标签: palantir-foundry foundry-code-repositories foundry-data-connection


【解决方案1】:

这是一个 Python 函数,用于为具有已提交事务的数据集上传架构:

from urllib.parse import quote_plus
import requests


def upload_dataset_schema(dataset_rid: str,
                          transaction_rid: str, schema: dict, token: str, branch='master'):
    """
    Uploads the foundry dataset schema for a dataset, transaction, branch combination
    Args:
        dataset_rid: The rid of the dataset
        transaction_rid: The rid of the transaction
        schema: The foundry schema
        branch: The branch

    Returns: None

    """
    base_url = "https://foundry-instance/foundry-metadata/api"
    response = requests.post(f"{base_url}/schemas/datasets/"
                             f"{dataset_rid}/branches/{quote_plus(branch)}",
                             params={'endTransactionRid': transaction_rid},
                             json=schema,
                             headers={
                                 'content-type': "application/json",
                                 'authorization': f"Bearer {token}",
                             }
                             )
    response.raise_for_status()

【讨论】:

  • 这就是我要找的东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-13
  • 2016-09-15
相关资源
最近更新 更多