从动态列中消除空键值对

Eliminating empty key value pairs from dynamic column

我有一个更新策略,它填充动态类型的目标 table 列。填充动态列的更新策略逻辑如下:-

project target_calculated_column = pack("key1",src_col1,
                                        "key2",src_col2,
                                        "key3",src_col3,
                                          .
                                          .
                                        "keyN",src_colN)

列 src_col1、src_col2、...、src_colN 是来自特定 table 的固定数量的列,它是更新策略的来源。这些列具有各种数据类型,其中大部分是字符串,其他是整数。此外,这里的主要内容是这些列可能包含也可能不包含输入行的任何值。这意味着对于整数列,值可以为空,或者对于字符串列,它可以为空。现在这里的问题是更新策略函数显然是事先编写的,因此它不知道哪些行将有空值或空白等。只有在更新策略启动时才会知道这些内容 运行。因此,当更新策略开始时 运行 我们最终在目标列 target_calculated_column 中得到以下类型的数据,显示目标行中的一个示例值:-

{
  "key1":"sometext",
  "key2":30,
  "key3":null,
  "key5":"hello",
  "key6":"",
  "key7":112,
  "key8":"",
  "key9":"",
  .
  .
  "keyN":10
}

这说明了问题所在。我不想将键值对保留为 target_calculated_column 的一部分,它们是空的(空值、空白等)。我想我要的是 pack() 的条件版本,它可以忽略具有空值的键值对,但我认为不存在这样的选项。有没有办法可以后处理 target_calculated_column 以便我可以消除这样的键值对?基本上在这个例子中我应该得到以下输出:-

   {
      "key1":"sometext",
      "key2":30,
      "key5":"hello",
      "key7":112,
      .
      .
      "keyN":10
    }

pack_all([ignore_null_empty]) function allows you to ignore nulls/empty values. If you want to remove some columns you can use the bag_remove_keys() function. The pack()函数本身不提供这个选项。