Compartir a través de

映射数据流中的代理键转换

适用于:Azure 数据工厂 Azure Synapse Analytics

数据流在 Azure 数据工厂和 Azure Synapse 管道中均可用。 本文适用于映射数据流。 如果不熟悉转换,请参阅介绍性文章使用映射数据流转换数据

使用代理键转换向每行数据添加递增的键值。 在星型架构分析数据模型中设计维度表时,这非常有用。 在星型架构中,维度表中的每个成员都需要唯一键,该键需要是一个非业务键。

Configuration

代理键转换

键列:生成的代理键列的名称。

起始值:将生成的最小键值。

从现有源增加键

若要从源中存在的值启动序列,建议使用缓存接收器保存该值,并使用派生列转换将两个值相加。 使用缓存的查找获取输出,并将其追加到生成的键。 有关详细信息,请了解缓存接收器缓存的查找

代理键查找

从现有的最大值开始递增

根据源数据的位置,可以使用两种技术将之前的最大值作为键值。

数据库源

使用 SQL 查询选项从源中选择 MAX()。 例如,Select MAX(<surrogateKeyName>) as maxval from <sourceTable>

代理键查询

文件源

如果之前的最大值位于文件中,请使用聚合转换中的 max() 函数获取之前的最大值:

代理键文件

在这两种情况下,都需要写入缓存接收器并查找该值。

数据流脚本

语法

<incomingStream> 
    keyGenerate(
        output(<surrogateColumnName> as long),
        startAt: <number>L
    ) ~> <surrogateKeyTransformationName>

示例

代理键转换

以上代理键配置的数据流脚本位于下面的代码片段中。

AggregateDayStats
    keyGenerate(
        output(key as long),
        startAt: 1L
    ) ~> SurrogateKey1

这些示例使用联接派生列转换。