問題タブ [crate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 2 つのテーブルの形状を使用して空間結合を発行することはできますか?
次のようなクエリを実行できるようにしたい:
しかし、私は得る:
サンプル スキーマ:
試行する理由wkt string
は、ドキュメントでの WKT リテラルの使用によるものです。さらに、実際の実装は、結合する可能性がありgeo_shape
、オブジェクトに存在できない可変数のジオメトリであるため、WKT が結合で機能することを期待していました。
更新 1 ( Augmented Jacob の回答による) geo_shape をこのスキーマで geo_shape に結合しようとしています。
そして、上記のクエリは別のエラーを生成します:
そして、エラーは理想的ではありませんが、ドキュメントの状態から、とにかく動作するとは思わないでしょう:
ノート
1 つの MATCH 述語で、結合の両方の関係の列を結合することはできません。
更新 2 geo_shape Join geo_shape を使用すると、match
動作しませんがwithin
動作しますが、「正確な」クエリであるため、少なくとも 2.4B 行ではパフォーマンスがほとんど使用できなくなります。
sql - SQL オブジェクトからアイテムをクエリする方法 (CRATE DB)
新しいクレート データベースを使用しようとしています。リンク 「インフラストラクチャ」および「ネットワーク」オブジェクトを含むテーブルがあります。
「インフラストラクチャ」から os_name を、ネットワーク アレイから Hosting_id をクエリする必要があります。どうすればいいですか?グーグルで正しい構文を見つけようとしましたが、成功しませんでした。私はこのようなものが欲しい:
と
sqoop - エラー/出力なしで HDFS から Crate.io DB に Sqoop エクスポート
hdfs を Crate.io DB にエクスポートしようとしていますが、Sqoop を使用しています。必要な .jar ファイルをインポートすると、sqoop ファイルは次のようになります。
sqoop 操作はエラーなしで実行されますが、hdfs からクレート データベースに挿入されるものは何もありません。IP で「doc」に言及しようとしましたが、まだ成功していません。
そして代わりに使われる
Python ライブラリを介してクレートにコンテンツを挿入できましたが、Sqoop を介してはできませんでした。ここで私が間違っているかもしれないアイデアはありますか?
authentication - 基本アクセス認証でcurlを使用してSQLクエリを作成する
crate.ioのドキュメントから、SQL クエリは次のように実行できると言われています。
curl -sSXPOST 'CLUSTER_IP:4200/_sql?pretty' -d '{"stmt":"select name from sys.cluster"}'
接続しようとしているデータベースには、ユーザー名とパスワードが必要です:
この認証をcurl呼び出しに組み込むにはどうすればよいですか? オンラインで見つけたもののいくつかのバリエーションを試しましたが、成功しませんでした。私が見続けるエラーは次のようになります。
crate - Crate: PRIMARY KEY 列が PARTITIONED BY 句に存在する必要があるのはなぜですか?
このドキュメントで読んでいることを理解するのを手伝ってもらえますか? https://crate.io/docs/reference/sql/partitioned_tables.html
これらの表の例では、列id long
はprimary_key
;ではありません。実際、id
ここでは主キーにすることはできません。なぜなら、以下に示すように、「主キーが設定されている場合は、PARTITION BY
句に存在する必要がある」ためです。
私のアプリでは、歴史的にprimary key
onがありましid string NOT NULL
たが、今は、例のように生成された日付列で、このテーブルにパーティショニングを追加したいと考えていますpartition_date timestamp GENERATED ALWAYS AS date_trunc('day', created_at)
。日付列でのパーティショニングは、期間によって範囲を絞ったクエリの速度に役立ち (たとえば、今日のすべてのレコードをカウントすると、今日のパーティションにしかヒットしない)、データの古いフレーム (たとえば、180 日を超えるもの) をアーカイブするのに役立つことを読みました。 )、しかし、単一の PK ルックアップのパフォーマンスを低下させたくありません。
では、ただではできないので、私がPARTITIONED BY (partition_date)
...
id
a) ?から主キー制約を削除します。これが単一行のルックアップのパフォーマンスに影響を与えるのではないかと心配しています! このコンテキストでは、PK がパーティション キーに含まれている必要があることは理にかなっています。これは、ルックアップWHERE id = "abc-123"
が理想的には 1 つのノードにヒットするだけでよいためです。
また
b) 両方の列を次のようにパーティション キーとして使用するPARTITIONED BY (id, partition_date)
-- これは奇妙に思えます。本能的に、これはid
カーディナリティが高く、パーティション列には不適切な選択であり、「日」または「月」の方が適切であると想定したいからです。あなたのドキュメントの例にそのようなものが示されています。この場合、私の PK ルックアップはすべてのパーティションにヒットしていますか、それともどこに行くべきかを正確に知っていますか? 今日のみを対象とした集計クエリを実行すると、すべてのパーティションにヒットするのでしょうか?それとも今日のデータを保持しているパーティションだけにヒットするのでしょうか?
sql - crate.io SQL ネストされた選択のエラー
crate.io 管理コンソールからこのクエリを実行していますが、次のUnsupportedOperationException
エラーで失敗します。
Cannot create plan for: io.crate.analyze.QueriedSelectRelation
クエリは次のとおりです。
最後の行 (つまり、WHERE ステートメント) を削除すると、実行されます。また、これは問題なく実行されます:
python - オブジェクトの配列にオブジェクト/辞書を挿入する (Crate、python)
クレートテーブルにオブジェクトの配列があり 、SELECT および fetchall() コマンドを実行すると、次の辞書のリストが表示されます。
その後、これらの辞書のいずれかから値を変更し、SQL UPDATE を使用して配列を更新したいと考えています。ハードコードでは、次のようになります。
これは、この辞書を解析する必要があることを意味します。
次のような文字列に変換します。
キーには " いいえ、 = の代わりに : 。どうすればPythonでそれを行うことができますか?