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
- Joda はまだチェックしていません。特殊文字の一部でない場合、日付形式の文字は無視されますか? 「/」デリミタまたはデュレーション値の前にある「P」(
- 日時のみとして保存する前に、文字フィルターを使用してその部分を取り除きます。しかし、type: date として保存する前に文字フィルターが発生するかどうかはわかりません。そうしないと、「/」の部分が取り除かれず、有効な日付文字列が渡されません。
/<duration>
<start>
- 日付型を使用しない: パターントークナイザーを使用して で分割する
/
と、少なくとも 2 つの部分が別々のトークンとして保存されます。ただし、日付計算は使用できません。 - 変換を使用します。これは非推奨のようですが。
copy_to
代わりに使用について読みましたが、それは用語を組み合わせているようです。この用語を分解したいと思います - ある種のプラグイン?OIM 仕様で記述されているこの「間隔」データ型を完全にサポートするプラグインかもしれません... 別々の部分を保存するプラグインかもしれません...?
アプリケーションを変更します (可能であれば、elasticsearch のみの手法を使用することを好みます)
- このプラグインを編集するか、
<start>
と部分のみを使用して両方を別々のフィールド<end>
に保存する独自のプラグインを作成することができます。- しかし、これは OIM 仕様に違反しており、単一のフィールドに結合する必要があると述べています。
- さらに、「瞬間的な」事実を表現するのは厄介な場合があります (期間なし;
PT0S
上記の例)。end
プロパティとプロパティに同じ値を使用しているだけだと思いstart
ます...長さ0の期間( )よりも厄介ではPT0S
ないと思います。