SQLでの日時フィールドの集計について

トピック作成者:ks-solruserml-bot (2024/08/24 22:02 投稿)
3
OpenOpen

(The bot translated the original post https://lists.apache.org/thread/sxwp897rl7z1yq99dr37ogfzv2z4szsg into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)

Solr SQLでデータを切り捨てて集計する方法はありますか?例えば、日時フィールドを月や年で集計する場合です。それとも、これらの集計を行うためには、Solrでは別のフィールドを作成するというアプローチが一般的なのでしょうか?

よろしくお願いします。
Koji

返信投稿者:ks-solruserml-bot (2024/08/24 22:03 投稿)

私はあまり使用していませんが、SQLの構文サポートは単純なものに限られているのではないかと思います。SQLハンドラーに詳しい方がいれば、ぜひ教えていただきたいです。

フィールドがdatetime型か、エポックからの経過時間を示す長い数値でインデックスされている場合、範囲ファセットを使用して月や年単位でグループ化する方法があります。

Solr SQLは内部でストリーミング表現を使用しており、ストリーミング表現はクエリ時に多彩な機能を提供しますが、その構文を学ぶ必要があります。

既存のSQLの知識をSolrに活用したい場合は、Apache Sparkが一つの選択肢かもしれません。SparkはSolrから効率的にデータをロードし、SQLで解析を行うことができ、集計に関してSQLが提供するほぼすべての機能をサポートしています。

-ufuk yilmaz

返信投稿者:ks-solruserml-bot (2024/08/24 22:03 投稿)

試してみたところ、SQLハンドラーとストリーミング表現を統合できるようです。そのため、ストリームデコレータを使用してSQLの結果をさまざまな方法で集計することが可能なようです。

以下のように書けます:

jdbc(
  connection="jdbc:solr://SOLR_ZK_CONNECTION_STRING?collection=COLLECTION_NAME",
  sql="select NAME, ADDRESS, EMAIL, AGE from PEOPLE where AGE > 25 order by AGE, NAME DESC",
  sort="AGE asc, NAME desc"
)
返信投稿者:ks-solruserml-bot (2024/08/24 22:03 投稿)

こんにちは、ufukさん、

ご意見を共有していただきありがとうございます。現在、SQLハンドラーにはPythonライブラリのSQLAlchemy(sqlalchemy_solr)を通じて接続しており、現時点ではSQLハンドラーのエンドポイントが最良の方法です。ただ、ストリーミング表現を使って解決できる可能性があるという点も、確かに期待が持てます。

よろしくお願いします、
Koji

トピックへ返信するには、ログインが必要です。

KandaSearch

Copyright © 2006-2024 RONDHUIT Co, Ltd. All Rights Reserved.

投稿の削除

この投稿を削除します。よろしいですか?