SQLテーブル

Collection: SQLCommunity Edition+

概要

SQLクエリを記述して SQLテーブルを作成します。データベースに実際のデータベーステーブルを作成するのではなく、SQLクエリの結果を読み込み、その結果をテーブル、詳細、チャート、ワークフローで利用できるようにします。集計データや統計レポートなどに適しています。

注意

SQLテーブルは SELECT ステートメントまたは WITH ... SELECT ステートメントのみをサポートしています。データの照会と表示のみをサポートし、データの追加、編集、削除はサポートしていません。

SQLテーブルの作成

  1. システム機能のデータソースメニューをクリックし、データソースのホームページにアクセスします。
  2. データソース一覧で Main データソースを選択し、「Configure」操作をクリックして、メインデータベースにアクセスします。
  3. メインデータベースの管理画面で「Create collection」をクリックし、「SQL collection」を選択します。

configure_main_datasource create_sql_collection create_sql_collection_configure

設定説明
Collection display nameSQLテーブルを画面上で表示する名称です。たとえば「売上集計」「在庫アラート」などです。クエリ結果の意味が分かる名称を使用することをおすすめします。
Collection nameNocoBase内でSQLテーブルを識別するための名称です。API、リレーションフィールド、権限、ワークフローなどで内部参照する際に使用します。自動生成されますが、手動で変更することもできます。使用できるのは英字、数字、アンダースコアのみで、先頭は英字である必要があります。
Categoriesデータテーブルの分類です。データテーブル管理画面での整理方法にのみ影響し、SQLクエリは変更しません。
Descriptionデータテーブルの説明です。このSQLクエリでどのデータを取得するのか、誰が管理するのか、どのページやレポートで使用するのかを明確に記載することをおすすめします。
Record unique keyレコードの一意識別子です。SQLクエリの結果には実際の主キーがないため、レコードを一意に特定できるフィールドまたはフィールドの組み合わせを選択する必要があります。そうしないと、ブロック内でレコードを正しく表示できない場合があります。
SQLSQLテーブルで使用するクエリです。NocoBaseはこのSQLを実行し、クエリ結果に基づいてフィールドを設定し、その結果をデータテーブルとして使用します。
Source collectionsSQLクエリ結果のフィールドのソースです。クエリ結果内のフィールドを既存のデータテーブルのフィールドと関連付け、NocoBaseがフィールドのソースと画面タイプを識別できるようにします。
Fieldsフィールドマッピングの設定です。各フィールドの名称、ソース、画面タイプ、表示名を確認するために使用します。
PreviewSQLクエリ結果をプレビューします。送信前に、フィールドマッピングと表示結果が想定どおりか確認できます。

SQLクエリの記述

SQLクエリを入力し、「Execute」をクリックしてクエリを実行し、返されたフィールドとソースデータテーブルの解析を試みます。 「Execute」はプレビューとフィールド解析の実行にのみ使用します。SQLクエリが使用可能であることを確認したら、「Confirm」をクリックしてください。フォームからこのSQLを確認済みのクエリとして送信できるようになります。

execute_sql_statement

ヒント

Source collections は、SQLクエリから推測されたソースデータテーブルです。クエリ結果のフィールドが主にどの既存データテーブルに由来するかを識別し、フィールドマッピングで選択可能な Field source を絞り込みます。

推測結果は、設定をすばやく行うための補助情報です。SQLクエリに別名、サブクエリ、計算フィールド、集計関数、複雑なjoinが含まれている場合、結果が完全に正確でない、または推測できないことがあります。その場合は Source collections を手動で指定できます。

フィールドマッピング

フィールドマッピングは、SQLテーブルの作成後に必ず確認する設定です。SQLクエリの結果からNocoBaseが把握できるのは、どの列が返されたかだけです。これらの列を通常のフィールドと同じように画面で使用するには、Field source を確認するか、Field interface とフィールド表示名を設定する必要があります。 フィールド設定の詳細

configure_sql_field_source configure_sql_field_interface

設定説明
Field sourceSQLクエリ結果のフィールドが、どの既存データテーブルのどのフィールドに由来するかを選択します。ソースを選択すると、NocoBaseは元のフィールドのField interfaceを再利用できます。
Field interfaceページ上でフィールドをどのように表示・入力するかを確認します。たとえば、単一行テキスト、数値、日付、ドロップダウンなどです。
Field display name画面上でフィールドを表示する名称です。業務担当者が理解しやすい名称を使用することをおすすめします。

たとえば、SQLクエリで customers.name as customer_name が返され、それが顧客テーブルの「顧客名」フィールドに由来する場合、顧客テーブルの対応するフィールドにマッピングできます。これにより、NocoBaseは元のフィールドのタイトルと画面設定を引き継ぐことができます。

フィールドが計算結果(たとえば count(*) as totalsum(amount) as amount_total)に由来する場合、通常は明確なソースフィールドがないため、適切なField interfaceを手動で選択する必要があります。

ヒント

Field sourceSource collections に依存します。先にソースデータテーブルを選択して初めて、フィールドマッピング表にそのデータテーブルで選択可能なソースフィールドが表示されます。

フィールド推測で Field source がある場合、NocoBaseはソースフィールドのField interfaceを優先的に再利用します。ソースフィールドを推測できない場合は、Field source を手動で指定できます。推測結果が業務上の意味に合わない場合は、Field source を削除し、Field source を手動で指定するか、Field interface を手動で選択して Field display name を設定できます。

レコードの一意識別子

SQLテーブルにはRecord unique keyを設定する必要があります。設定しないと、ページ上でブロックを作成できず、レコードを正しく表示できません。1つのフィールド、または複数のフィールドの組み合わせを一意識別子として選択できます。Record unique keyに適したフィールドは、通常、次の条件を満たします。

  • クエリ結果の各行が一意である
  • ページネーション、並べ替え、集計条件が変わっても値が変わらず安定している
  • 値が空でない
  • クエリ結果に常に返される

クエリ結果が単一テーブルに由来する場合は、元のテーブルの主キーを優先的に返すことをおすすめします。複数テーブルのjoinや集計に由来する場合は、SQL内で安定した業務IDを保持するか、組み合わせによってレコードを特定できる複数のフィールドを返します。

注意

並べ替え、フィルター、集計範囲によって変化する row_number() のような値を、長期的に安定したRecord unique keyとして使用しないでください。レコードの一意識別子が変わると、ページブロック、権限、ワークフロー、外部APIで同じレコードを特定できなくなる可能性があります。

クエリ結果のプレビュー

送信前にPreviewを使用してSQLクエリ結果を確認します。プレビューでは、次の点を重点的に確認してください。

  • SQLが正常に実行できるか
  • 返されるフィールドが完全か
  • Field interfaceと表示名が業務上の意味に合っているか
  • Record unique keyが存在し、データが一意であるか
  • クエリ結果がページ表示に適しているか

preview_sql_collection

フィールドの設定

SQLテーブルの作成後、データテーブル一覧でSQLテーブルの右側にある「Configure fields」をクリックすると、フィールド設定ページに移動できます。フィールド設定では、SQLテーブルに含まれるフィールド、画面上での表示方法、SQLクエリ結果をNocoBaseのField interfaceにマッピングする方法を管理します。 フィールド設定の詳細

UIタイプの切り替え

SQLテーブルの作成後も、フィールド設定で画面設定を調整できます。フィールド設定ページでは主に、Field interfaceの切り替え、表示名の変更、説明、フィールド固有の設定を行います。 configure_field_sql

次のような場合に適しています。

  • SQLテーブルの作成時に、Field interfaceを誤って設定した
  • フィールド表示名が業務上の慣習に合わないため、より分かりやすい名称に変更したい
  • クエリ結果フィールドの業務上の意味が変わったため、表示方法を再確認したい
  • フィールドの説明やフィールド固有の設定(ドロップダウンの選択肢など)を調整したい

データベースから同期

SQLクエリに変更がなく、基盤となるデータテーブルの構造やフィールドに変更があった場合は、「Configure fields」に移動し、「Sync from database」をクリックしてSQLを再実行し、フィールドを同期できます。フィールドマッピングについては「SQLテーブルの作成」を参照してください。

sync_sql_collection_fields

フィールドの編集

フィールド右側の「Edit」をクリックすると、フィールド設定を編集できます。フィールドの編集は、NocoBaseでのフィールドの表示方法や利用方法を調整する場合に適しています。たとえば、表示名、説明、検証ルール、フィールド固有の設定などを変更できます。 フィールド設定の詳細

注意

フィールド設定を編集しても、SQLクエリ、ソーステーブルのフィールド名、ソーステーブルのフィールド定義、データベースインデックスは変更されません。クエリ結果に含まれる実際の列を調整する必要がある場合は、まずSQLクエリを変更し、その後で再実行してフィールドを同期してください。

フィールドの削除

フィールド右側の「Delete」をクリックすると、個別のフィールドを削除できます。フィールドを削除すると、NocoBaseに保存されたフィールドのみが削除され、SQLクエリやソースデータテーブルの実際の列は削除されません。 フィールド設定の詳細

注意

フィールドを削除すると、ページブロック、フィルター条件、並べ替え、権限、ワークフロー、API、既存の設定に影響する可能性があります。削除する前に、そのフィールドが引き続き使用されているか確認してください。SQLクエリでその列が引き続き返される場合、後で「Sync from database」を実行すると、NocoBaseがそのフィールドを再び識別する可能性があります。

SQLテーブルの編集

データテーブル一覧で対象のSQLテーブル右側にある「Edit」をクリックすると、NocoBase内のSQLテーブルのメタ情報と実行設定を調整できます。編集時の設定項目はSQLテーブルの作成時とほぼ同じですが、Collection name のみ変更できません。

SQLクエリを変更した場合は、再度「Execute」をクリックし、フィールドマッピング、Record unique key、プレビュー結果を確認してください。

edit_sql_collection

注意

SQLクエリを変更すると、フィールド名、フィールドマッピング、Record unique keyが変わる可能性があります。変更後は、ページブロック、チャート、権限、ワークフローが引き続き利用できるか再確認してください。

SQLテーブルの削除

データテーブル一覧でSQLテーブル右側の「Delete」をクリックすると、NocoBase内のSQLテーブル設定とフィールドのみが削除されます。基盤となるソーステーブルや、ソーステーブル内のデータは削除されません。 複数選択して一括削除することもできます。削除する前に、ページブロック、チャート、権限、ワークフロー、外部APIでこのSQLテーブルがまだ使用されていないか確認してください。