首页 > 解决方案 > 为什么数据流接收器缓存没有所有数据预览结果?

问题描述

当使用缓存接收器与数据集接收器时,我发现数据流结果存在显着差异。我重新创建了一个简单的示例来演示。

我将一个简单的 JSON 文件上传到 Azure Data Lake Storage Gen 2:

{
  "data": [
    {
      "id": 123,
      "name": "ABC"
    },
    {
      "id": 456,
      "name": "DEF"
    },
    {
      "id": 789,
      "name": "GHI"
    }
  ]
}

我创建了一个简单的数据流来加载这个 JSON 文件,将其展平,然后通过接收器返回它。我主要对使用 Cache Sink 感兴趣,因为输出很小,我最终将需要输出用于下一个管道步骤。(已检查写入活动输出。)

在此处输入图像描述

您可以看到数据预览显示了所有 3 行。(在这个例子中我有两个接收器只是因为我在说明它们不匹配。)

接下来,我创建一个管道来运行数据流:

在此处输入图像描述

现在,当我调试它时,数据流输出只显示 1 条记录:

        "output": {
            "TestCacheSink": {
                "value": [
                    {
                        "id": 123,
                        "name": "ABC"
                    }
                ],
                "count": 1
            }
        },

但是,第二个数据集接收器包含所有 3 条记录:

{"id":123,"name":"ABC"}
{"id":456,"name":"DEF"}
{"id":789,"name":"GHI"}

我希望缓存接收器的输出也有 3 条记录。 为什么会有差异?

标签: azure-data-factoryazure-data-factory-2

解决方案


当您选择缓存作为接收器时,您将无法使用日志记录。在调试之前的验证过程中,您会看到以下错误。

在此处输入图像描述

要解决这个问题,当您选择“”进行记录时,它会自动检查“仅第一行”属性!这导致它只将第一行写入缓存接收器。您只需在运行调试之前手动取消选中它。

这是它的外观...

在此处输入图像描述


推荐阅读