0

Elasticsearch を使用して XBRL JSON を保存しています。

この xBRL-JSON OIM 仕様oim:periodでは、プロパティについて説明しています。

それ以外の場合は、{interval} プロパティを表す ISO 8601 時間間隔で、次のいずれかの形式で表されます。

<開始>/<終了>

<開始>/<期間>

<期間>/<終了>

<start> と <end> は xsd:dateTime データ型に従って有効であり、<duration> は xsd:duration に従って有効です。

arelle のプラグインの例は次のようになります。

  • 2016-01-01T00:00:00/PT0S
  • 2015-01-01T00:00:00/P1Y

私は、arelle のプラグインがこの形式のみを生成することに気付きました:

  • <開始>/<期間>

私の質問

少なくとも<start>部分をelasticsearchの日付型として保存する方法はありますか?

私が持っていたアイデア:

Elastichsearch のみ (私の好み)

  • 部分を予測するカスタム日付形式を使用する/<duration>が、それを無視する
    • Joda はまだチェックしていません。特殊文字の一部でない場合、日付形式の文字は無視されますか? 「/」デリミタまたはデュレーション値の前にある「P」(PT0SおよびそれP1Y以上)のように?
    • 編集したがって、単一引用符文字はリテラルをエスケープします。この作品yyyy'/P'は、値「2015/P」を受け入れます。ただし、残りの期間はより動的になる可能性があります
    • Re: ダイナミック; Joda は "\d" や "+" 修飾子などの正規表現またはワイルドカード文字を受け入れるので、 ?に続くすべての可能なバリエーションを無視できます。P
  • 日時のみとして保存する前に、文字フィルターを使用してその部分を取り除きます。しかし、type: date として保存する前に文字フィルターが発生するかどうかはわかりません。そうしないと、「/」の部分が取り除かれず、有効な日付文字列が渡されません。/<duration><start>
  • 日付型を使用しない: パターントークナイザーを使用して で分割する/と、少なくとも 2 つの部分が別々のトークンとして保存されます。ただし、日付計算は使用できません。
  • 変換を使用します。これは非推奨のようですが。copy_to代わりに使用について読みましたが、それは用語を組み合わせているようです。この用語を分解したいと思います
  • ある種のプラグイン?OIM 仕様で記述されているこの「間隔」データ型を完全にサポートするプラグインかもしれません... 別々の部分を保存するプラグインかもしれません...?

アプリケーションを変更します (可能であれば、elasticsearch のみの手法を使用することを好みます)

  • このプラグインを編集するか、<start>と部分のみを使用して両方を別々のフィールド <end>に保存する独自のプラグインを作成することができます。
    • しかし、これは OIM 仕様に違反しており、単一のフィールドに結合する必要があると述べています。
    • さらに、「瞬間的な」事実を表現するのは厄介な場合があります (期間なし;PT0S上記の例)。endプロパティとプロパティに同じ値を使用しているだけだと思いstartます...長さ0の期間( )よりも厄介ではPT0Sないと思います。
4

1 に答える 1