当前位置: 首页 > 知识库问答 >
问题:

乔尔特换档转型

谷梁楚青
2023-03-14

JSON输入和输出需要JOLT规范。PFB的数据也一样。

输入:

{
  "customer": {
    "contact": {
      "name": {
        "firstName": "Karan",
        "lastName": "Singh",
        "middleName": null
      },
      "phone": "902-167-5435",
      "secondaryPhone": null,
      "email": "Karan.Singh@gmail.com"
    }
  }
}

预期输出 :

{
  "buyerInfo": {
    "id": "as123-e617-4410-969f",
    "primaryContact": {
      "name": {
        "firstName": "Karan",
        "lastName": "Singh"
      },
      "phone": {
        "completeNumber": "9021675435"
      },
      "email": {
        "emailAddress": "Karan.Singh@gmail.com"
      }
    }
  }
}

请帮助我提供相同的 JOLT 规范。另外,请分享JOLT链接。

共有2个答案

洪涵亮
2023-03-14

符号思考,通过使用一些通配符(例如 *)减少写入,

[
  {
    "operation": "shift",
    "spec": {
      "#as123-e617-4410-969f": "buyerInfo.id",
      "cu*": {
        "co*": {
          "name": {
            "*t*ame": "buyerInfo.primary&(2,0).&1.&"
          },
          "ph*": "buyerInfo.primarycontact.&.completeNumber",
          "em*": "buyerInfo.primarycontact.&.&Address"
        }
      }
    }
  }
]

http://jolt-demo.appspot.com/网站上的演示是

西门智
2023-03-14
[
  {
    "operation": "shift",
    "spec": {
      "customer": {
        "contact": {
          "name": {
            "firstName": "buyerInfo.primaryContact.name.firstName",
            "lastName": "buyerInfo.primaryContact.name.lastName"
          },
          "phone": "buyerInfo.primaryContact.phone.completeNumber",
          "email": "buyerInfo.primaryContact.email.emailAddress"
        }
      }
    }
  }
]

拿到雷震规范了:)

 类似资料:
  •   规则化器缩放单个样本让其拥有单位$L^{p}$范数。这是文本分类和聚类常用的操作。例如,两个$L^{2}$规则化的TFIDF向量的点乘就是两个向量的cosine相似度。   Normalizer实现VectorTransformer,将一个向量规则化为转换的向量,或者将一个RDD规则化为另一个RDD。下面是一个规则化的例子。 import org.apache.spark.SparkConte

  •   QuantileDiscretizer输入连续的特征列,输出分箱的类别特征。分箱数是通过参数numBuckets来指定的。 箱的范围是通过使用近似算法(见approxQuantile )来得到的。 近似的精度可以通过relativeError参数来控制。当这个参数设置为0时,将会计算精确的分位数。箱的上边界和下边界分别是正无穷和负无穷时, 取值将会覆盖所有的实数值。 例子   假设我们有下面的

  •   VectorAssembler是一个转换器,它可以将给定的多列转换为一个向量列。合并原始特征与通过不同的转换器转换而来的特征,从而训练机器学习模型, VectorAssembler是非常有用的。VectorAssembler允许这些类型:所有的数值类型,boolean类型以及vector类型。 例子   假设我们有下面的DataFrame,它的列名分别是id, hour, mobile, us

  •   SQLTransformer实现了一种转换,这个转换通过SQl语句来定义。目前我们仅仅支持的SQL语法是像SELECT ... FROM __THIS__ ...的形式。 这里__THIS__表示输入数据集相关的表。例如,SQLTransformer支持的语句如下: SELECT a, a + b AS a_b FROM __THIS__ SELECT a, SQRT(b) AS b_sqrt

  •   Bucketizer将连续的特征列转换成特征桶(buckets)列。这些桶由用户指定。它拥有一个splits参数。 splits:如果有n+1个splits,那么将有n个桶。桶将由split x和split y共同确定,它的值范围为[x,y),如果是最后 一个桶,范围将是[x,y]。splits应该严格递增。负无穷和正无穷必须明确的提供用来覆盖所有的双精度值,否则,超出splits的值将会被

  •   MaxAbsScaler转换由向量列组成的数据集,将每个特征调整到[-1,1]的范围,它通过每个特征内的最大绝对值来划分。 它不会移动和聚集数据,因此不会破坏任何的稀疏性。 MaxAbsScaler计算数据集上的统计数据,生成MaxAbsScalerModel,然后使用生成的模型分别的转换特征到范围[-1,1]。下面是程序调用的例子。 import org.apache.spark.ml.fe