用途:当需要从数据仓库或相邻系统采集元数据、血缘、新鲜度、体量或查询日志,并通过推送式接入 API(push-ingestion)送入 Monte Carlo 时使用此技能。推送模型适用于任意数据源;若客户仓库没有现成模板,可从该仓库的系统目录或元数据 API 推导采集查询。无论来源如何,推送格式与 pycarlo SDK 调用保持一致。推送数据经集成网关、专用 Kinesis 流、轻量适配/规范化代码,最终汇入与拉取模型相同的下游系统,新增基础设施仅为入口层。
主要能力:采集并推送元数据、表级或列级血缘、查询日志;填补拉取模型难以覆盖的缺口,如不暴露查询历史的集成、非仓库资产间的自定义血缘,或客户已有数据希望直接发送。
使用方式(强制要求):始终从模板出发。生成任何推送脚本前必须先读取对应模板,位于该技能目录 scripts/templates/<warehouse>/ 下,可用 **/push-ingestion/scripts/templates/<warehouse>/*.py 查找,不要仅从当前工作目录搜索。需按客户需求改编模板,不要凭记忆编写 pycarlo 导入、模型构造器或 SDK 方法调用。若目标仓库无模板,以 Snowflake 模板为准,仅改编仓库特定采集查询。模板命名:collect_<flow>.py 仅采集(查询仓库并写 JSON 清单)、push_<flow>.py 仅推送(读清单并发送)、collect_and_push_<flow>.py 组合顺序执行。运行任何推送脚本后,必须向用户展示 API 返回的 invocation_id,它是追踪下游数据与验证的唯一方式,用于 /mc-validate-metadata、/mc-validate-lineage 和调试。
规范 pycarlo API:导入包括 from pycarlo.core import Client, Session;from pycarlo.features.ingestion import IngestionService;from pycarlo.features.ingestion.models import (RelationalAsset, AssetMetadata, AssetField, AssetVolume, AssetFreshness, Tag, LineageEvent, LineageAssetRef, ColumnLineageField, ColumnLineageSourceField, QueryLogEntry)。客户端:client = Client(session=Session(mcd_id=key_id, mcd_token=key_token, scope="Ingestion"));service = IngestionService(mc_client=client)。方法:service.send_metadata(resource_uuid=..., resource_type=..., events=[RelationalAsset(...)]);service.send_lineage(resource_uuid=..., resource_type=..., events=[LineageEvent(...)]);service.send_query_logs(resource_uuid=..., log_type=..., events=[QueryLogEntry(...)])(注意是 log_type 而非 resource_type);service.extract_invocation_id(result) 提取 invocation ID。RelationalAsset 为嵌套结构,type 仅支持大写 "TABLE" 或 "VIEW",需归一化仓库原生值,包含 metadata(name、database、schema、description)、fields(AssetField 的 name、type、description)、可选 volume(row_count、byte_count)与 freshness(last_update_time,如 2026-03-12T14:30:00Z)。
环境变量约定:脚本必须使用 MCD_INGEST_ID(Ingestion 作用域的接入密钥 ID,push 脚本使用)与 MCD_INGEST_TOKEN,不得自造 MCD_KEY_ID、MC_TOKEN、MONTE_CARLO_KEY 等替代名。
限制:资料仅提供上述内容;未提供支持的具体仓库清单、配额/定价、完整模板文件内容、validate 命令参数及错误处理细节,暂未提供。