3

現在、いくつかの ETL ジョブのために Pentaho Kettle を使用しています。JSON フィードを統合する必要があります。つまり、JSONPath を使用してデータを取得する必要があります。ほとんどの場合、JSON データの一部が親と子の両方で同じフィールド名を持つネストされたオブジェクトであることを除いて、うまく機能しています。

JSON の例:

[
  {
    "Key": "5e59d536-2e3c-487c-bff1-efd0a706532f",
    "Product": {
      "Name": "Some Product",
      "LastUpdated": "2013-08-23T12:10:25.454",
    },
    "Reviewer": {
      "Email": "blah@foo.com",
      "LastUpdated": "2013-08-23T12:10:25.454",
    },
    "LastUpdated": "2013-08-23T12:10:25.407",
  },
  {
    "Key": "f3ae6a4b-1a20-4a9a-9a8e-2de5949c4493",
    "Product": {
      "Name": "Some Product",
      "LastUpdated": "2013-08-23T12:10:51.896",
    },
    "Reviewer": {
      "Email": "blah@foo.com",
      "LastUpdated": "2013-08-23T12:10:51.896",
    },
    "LastUpdated": "2013-08-23T12:10:51.896",
  },
  {
    "Key": "de01c358-6c74-473c-8cd4-a44cf50132df",
    "Product": {
      "Name": "Some Product",
      "LastUpdated": "2013-08-26T10:30:13.617",
    },
    "Reviewer": {
      "Email": "blah@foo.com",
      "LastUpdated": "2013-08-26T10:30:13.617",
    },
    "LastUpdated": "2013-08-26T10:30:13.601",
    },
  },
  {
    "Key": "af04e48a-3ce8-4227-a00a-14483ca75058",
    "Product": {
      "Name": "Some Product",
      "LastUpdated": "2013-08-26T10:31:20.573",
    },
    "Reviewer": {
      "Email": "blah@foo.com",
      "LastUpdated": "2013-08-26T10:31:20.573",
    },
    "LastUpdated": "2013-08-26T10:31:20.573",
  },
  {
    "Key": "d1a787bb-37d2-4ea9-84fd-5a3d454b9127",
    "Product": {
      "Name": "Some Product",
      "LastUpdated": "2013-08-27T11:59:56.777",
    },
    "Reviewer": {
      "Email": "blah@foo.com",
      "LastUpdated": "2013-08-27T11:59:56.777",
    },
    "LastUpdated": "2013-08-27T11:59:56.73",
  },
  {
    "Key": "d8646319-af27-464f-bd50-d61e035800c6",
    "Product": {
      "Name": "Some Product",
      "LastUpdated": "2013-08-27T19:43:06.928",
    },
    "Reviewer": {
      "Email": "blah@foo.com",
      "LastUpdated": "2013-08-27T19:43:06.928",
    },
    "LastUpdated": "2013-08-27T19:43:06.866",
  },
]

ご覧のとおり、親オブジェクトとその子オブジェクト「Product」と「Reviewer」にはすべて「LastUpdated」フィールドがあります。親オブジェクトの「LastUpdated」のみを取得しようとしていますが、次を使用しています:

$..LastUpdated

親の LastUpdated、Product LastUpdated、Reviewer LastUpdated の順に返します。

結果:

[
   "2013-08-23T12:10:25.407",
   "2013-08-23T12:10:25.454",
   "2013-08-23T12:10:25.454",
   "2013-08-23T12:10:51.896",
   "2013-08-23T12:10:51.896",
   "2013-08-23T12:10:51.896",
   "2013-08-26T10:30:13.601",
   "2013-08-26T10:30:13.617",
   "2013-08-26T10:30:13.617",
   "2013-08-26T10:31:20.573",
   "2013-08-26T10:31:20.573",
   "2013-08-26T10:31:20.573",
   "2013-08-27T11:59:56.73",
   "2013-08-27T11:59:56.777",
   "2013-08-27T11:59:56.777",
   "2013-08-27T19:43:06.866",
   "2013-08-27T19:43:06.928",
   "2013-08-27T19:43:06.928"
]

予想された結果:

[
   "2013-08-23T12:10:25.407",
   "2013-08-23T12:10:51.896",
   "2013-08-26T10:30:13.601",
   "2013-08-26T10:31:20.573",
   "2013-08-27T11:59:56.73",
   "2013-08-27T19:43:06.866",
]

親オブジェクトの LastUpdated フィールドのみを取得するために使用できるクエリはありますか?

4

1 に答える 1

1

最後にそれを理解しました:

$[*].LastUpdated -> only the parents
$[*].Product.LastUpdated -> only the product
$[*].Reviewer.LastUpdated -> only the reviewer
于 2013-08-28T18:50:03.820 に答える