HubDB

Last updated:
APPLICABLE PRODUCTS
  • Marketing Hub
    • Enterprise
  • CMS Hub
    • Professional or Enterprise

HubDBは、データを行、列、セルに保存する、スプレッドシートによく似たテーブルを作成するために使用するツールです。HubDBテーブルの列、行、およびその他の設定は、必要に応じてカスタマイズできます。例えば、以下のような処理に対応できます。

  • 外部メカニズムからのフィードバックを保存し、後で取得できるようにする
  • 動的CMSページを作成するために使用可能な構造化データを保存する(「CMS Hub Professional」および「Enterprise」のみ)
  • プログラム可能なEメールで使用するデータを保存する(「Marketing Hub Enterprise」のみ)

hubdb-table-example0HubDBテーブルには、HubSpot内からアクセスすることも、HubDB APIを介してアクセスすることもできます。そのためテーブルのデータを取得する場合、使用ケースによってさまざまな方法があります。具体的には次の方法が挙げられます。

  • HubDB API(英語)を介して外部からデータのクエリーを実行する
  • HubSpotのHubLマークアップタグを使用してデータを構造化データとしてCMSに取り込む
  • HubDB APIとサーバーレス関数を使用して対話型のウェブアプリ環境を提供する

注:

HubDBアーキテクチャー

HubDBテーブルは、スプレッドシートと同様に、行、列、セルで構成されます。

  • テーブル:テーブル(表)は行と列の2次元配列です。テーブルは、作成時にグローバル固有IDが割り当てられます。これは、HubLまたはAPIを介してテーブルを指定する必要があるときに使用できます。
  • 行:行はテーブルの横方向のスライスです。スプレッドシートアプリケーションの場合、行は1から始まる番号で表されます。各テーブル行は、作成時にグローバル固有IDが割り当てられます。テーブルの各行には、既定でいくつかの列が含まれています。
Use this table to describe parameters / fields
Description
hs_id

この行に自動的に割り当てられた、数値のグローバル固有ID

hs_created_at

この行が作成された時点のタイムスタンプ

hs_path

動的ページで使用される場合、ページのURLパスの最後の文字列

hs_name

動的ページで使用される場合、ページのタイトル

注:HubDBのリッチ テキスト エリア列は65,000文字に制限されています。詳細については変更履歴の通知(英語)をご参照ください。

  • 列:列はテーブルの縦方向のスライスです。各列にはタイプがあり、特定の種類のデータを格納するために使用されます。テーブルには必要な数の列を含めることができ、各列は作成時にグローバル固有IDが割り当てられます。列IDは1の値から始まりますが、必ずしも連続する値ではなく、再利用することはできません。列タイプは次のとおりです。 
    • テキスト
    • リッチテキスト
    • URL
    • 画像
    • 選択
    • 複数選択
    • 日付
    • 日時
    • 数値
    • 通貨
    • チェックボックス
    • 場所(経度、緯度)
    • 外部ID
    • 動画
  • セル:セルは行と列が交差する場所であり、値を格納します。セルの読み取りと更新は、セル単位で個別に、または行の一部として行うことができます。セルの値をnullに設定する操作は、セルの値の削除に相当します。

HubDBの技術的な制限事項

HubSpotの一般的なAPI制限に加えて、HubDBには次の技術的な制限事項があることにご注意ください。

  • アカウントの制限:
    • アカウント1件あたりのHubDBテーブル数:1,000件
    • アカウント1件あたりのHubDB行数:100万行
  • テーブルの制限:
    • テーブル1件あたりの列数:250列
    • HubDBテーブル1件あたりの行数:10,000行
    • テーブル名1件あたりの文字数:700文字
    • テーブルラベル1件あたりの文字数:700文字
  • 列の制限:
    • リッチテキスト列1列あたりの文字数:65,000文字
    • 各テキスト列の文字数:10,000文字
    • 列名1件あたりの文字数:700文字
    • ラベル1件あたりの文字数:700文字
    • 列の説明1件あたりの文字数:300文字
    • 列内の選択可能なオプション1件あたりの文字数:700文字
  • ページの制限:
    • CMSページ1ページあたりのhubdb_table_rows HubL関数の呼び出し:10回
    • 同じHubDBテーブルを使用する動的ページ:10ページ
    • 動的ページが有効なHubDBではパスが必ず小文字で設定されるため、これらのページへのURLでは大文字と小文字が区別されません。

HubDBテーブルを作成する

HubDBテーブルを作成するには、HubSpotのUIまたはHubDB APIを使用します。

全ての新しく作成されたテーブルのステータスは、下書きとして設定されます。テーブルは公開するまで、HubLまたはAPIによるデータ出力を目的として使用することができません。テーブルを作成する際に、パブリックAPIアクセスを許可するかどうか、テーブルのデータを動的ページの作成に使用するかどうかなどの設定を管理することもできます。

複数のHubDBテーブルを結合する

HubDBテーブルは、外部ID列タイプを使用して結合できます。結合により、複数のテーブルからの組み合わせデータをレンダリングできます。これは、複数のデータストア間で一部のデータが共有される場合に役立ちます。1つの集中管理データテーブルでこの情報を管理でき、その他の複数のHubDBテーブル データ ストアからそのテーブルにアクセスできます。

複数のHubDBテーブルを結合する方法は次のとおりです。

1. メインテーブルに外部ID列を追加する

  • HubSpotアカウントで、[マーケティング]>[ファイルとテンプレート]>[HubDB]の順に進みます。
  • テーブル結合を追加するテーブルを見つけて、[アクション]ドロップダウンメニューをクリックし、[編集]を選択します。
  • 右上の[編集]をクリックし、[列を追加]を選択します。
  • 新しい列のラベル名前を入力します。
  • [列のタイプ]ドロップダウンメニューをクリックし、[外部ID]を選択します。
  • [テーブルを選択]ドロップダウンメニューをクリックし、現在のテーブルに結合するテーブルを選択します。
  • [列を選択]ドロップダウンメニューをクリックし、選択した結合対象テーブルから、[外部ID]フィールドに表示するを選択します。
  • [列を追加]をクリックします。

注:[列を選択]で選択した値は、どの列の値がHubDB UIの[外部ID]フィールドに表示されるかを規定するだけです。結合されたHubDBテーブルをレンダリングする際は、全てのテーブル列を使用できます。

hubdb_foreign_id

2. テーブルの行に外部テーブル行を追加する

[外部ID]列を選択したので、次はHubDBテーブルの各行に複数選択列フィールドを指定します。これにより、外部テーブルの行を選択できるようになります。

選択した[列を選択]フィールドは、この複数選択フィールドで使用されます。これにより、外部テーブルから選択する行を見つけやすくなります。以下の例では、[Expertise table join]フィールドの複数選択値は、外部HubDBテーブルの[Name]列です。

hubdb_foreign_id_ui

注:[外部ID]列の[列を選択]フィールドは安全に編集できます。編集しても、どの列の値がHubDB UIに表示されるかが更新されるだけです。

3. 結合されたHubDBテーブルデータをレンダリングする

レンダリングでは、[列を選択]フィールドだけでなく、外部テーブル行の全てのデータにHubLを介してアクセスできます。HubDB外部行のデータにアクセスするには、ネストしたforループを使用して、個々の行に関連付けられた全ての外部行をループ処理します。

HubL
{% for row in hubdb_table_rows(tableId, filterQuery) %}
  the name for row {{ row.hs_id }} is {{ row.name }}
  {% for foreign_row in row.foreign_table %}
  	the name for foreign row {{ foreign_row.hs_id }} is {{ foreign_row.name }}
  {% endfor %}
{% endfor %}

HubLを使用したHubDBデータへのアクセス

HubLを使用すると、ウェブサイトページで構造化コンテンツとして使用するHubDBデータを取得できます。この後、HubLを使用してテーブル、行、列のデータを取得する方法を詳しく説明します。

注:下書きされたHubDBテーブルデータはページエディターとライブプレビューに表示されますが、公開されたHubDBコンテンツのみがライブページに表示されます。エディターに表データが表示されているか、ライブページに表示されていないプレビューが表示されている場合は、その表データの追加後に表が公開されていることを確認します。

行の取得

テーブルののをリストを取得するには、HubL関数hubdb_table_rows()を使用します。テーブルには、テーブルのIDまたは名前でアクセスできます。HubSpotアカウント間でのコード移植に役立つ可能性があるため、HubDBテーブルは名前で参照することをお勧めします。新しいテーブルの作成時に変更不可能なテーブル名を設定します。この名前は、テーブルエディター内の[アクション]>[設定を管理]を選択することでいつでも確認可能です。テーブルのIDは、テーブルエディターのアドレスバー、またはHubDBテーブルダッシュボードのID列に表示されます。 

テーブル作成モーダルのスクリーンショット

以下は、hubdb_table_rows()を使用したデータ取得の例です。

{% for row in hubdb_table_rows(<tableId or name>, <filterQuery>) %} the value for row {{ row.hs_id }} is {{ row.<column name> }} {% endfor %}

注:既定では、返される行の最大数は1,000です。それより多くの行を取得するには、関数クエリーでlimitを指定します。例として、以下のような場合が挙げられます。

hudb_table_rows (12345, "random()&limit=1500")

<filterQuery>の構文は、HTTP APIと同じです。例えばhubdb_table_rows(123, "employees__gt=10&orderBy=count")の場合、employees列の値が10よりも大きい行が、count列の順に並べ替えた状態で返されます。<filterQuery>の全ての任意パラメーターのリストは、テーブル行の取得方法に関するページ(英語)でご確認いただけます。

異なる<filterQuery>パラメーターを指定した複数の行クエリーを使用する代わりに、1つのクエリーを使用して、selectattr()またはrejectattr()フィルターで次のように行を絞り込む方法が適切です。

{% set all_cars = hubdb_table_rows(<tableId or name>) %} {% set cars_with_windows = all_cars|selectattr('windows') %} {% set teslas = all_cars|selectattr('make','equalto','tesla') %}

1つの行を取得するには、HubL関数hubdb_table_row()を使用します。

{% set row = hubdb_table_row(<tableId or name>, <rowId>) %} the value for {{ row.hs_id }} is {{ row.<column name> }}

組み込み列とカスタム列の名前では大文字と小文字は区別されません。HS_IDhs_idの動作は同じです。

行の属性

Use this table to describe parameters / fields
属性Description
row.hs_id

この行のグローバル固有ID

row.hs_path

動的ページを使用する場合、この文字列は「ページのパス」列の値で、ページのURLパスの最後の部分です

row.hs_name

動的ページを使用する場合、この文字列は行の「ページタイトル」列の値です

row.hs_created_at

行が作成された時点のUnixタイムスタンプ

row.hs_child_table_id

動的ページを使用する場合、これは行のデータを提供する別のテーブルのIDです

row.column_name

列名を使用してカスタム列の値を取得します

row["column name"]

列名を使用してカスタム列の値を取得します

テーブルメタデータの取得

テーブルの名前、列、最終更新日などのメタデータを取得するには、hubdb_table()関数を使用します。

{% set table_info = hubdb_table(<tableId or name>) %}

テーブルの属性

ここでは、前述のコードでhubdb_table()から代入された変数を例に、関連する属性を示します。実際にご使用の変数名とは異なる場合があります。
利便性を考慮して、変数に属性値を代入することをお勧めします。または、次の方法を使用できます。
{{ hubdb_table(<tableId>).attribute }}

Use this table to describe parameters / fields
属性Description
table_info.id

テーブルのID

table_info.name

テーブルの名前

table_info.columns

列情報のリスト。この属性の情報に対して、forループによる反復処理を実行できます

table_info.created_at

テーブルが初めて作成された時点のタイムスタンプ

table_info.published_at

このテーブルが公開された時点のタイムスタンプ

table_info.updated_at

このテーブルの最終更新時点のタイムスタンプ

table_info.row_count

テーブル内にある行の数

列メタデータの取得

{% set table_info = hubdb_table_column(<tableId or name>, <columnId or column name>) %}

テーブルの列に関する情報(ラベル、タイプ、オプションなど)を取得するには、hubdb_table_column()関数を使用します。

列の属性

ここでは、前述のコードでhubdb_table_column()から代入された変数を例に、関連する属性を示します。実際にご使用の変数名とは異なる場合があります。
利便性を考慮して、変数に属性値を代入することをお勧めします。または、次の方法を使用できます。
{{ hubdb_table_column(<tableId>,<columnId or column name>).attribute }}

Use this table to describe parameters / fields
属性Description
table_info.id

列のID

table_info.name

列の名前

table_info.label

列に使用するラベル

table_info.type

この列のタイプ

table_info.options

select列タイプの場合、これはoptionIdoption情報のマップです

table_info.foreignIds

foreignId列タイプの場合、foreignIdのリストです(idプロパティーとnameプロパティーが含まれる)

列のメソッド

Use this table to describe parameters / fields
メソッドDescription
getOptionByName("<option name")

select列タイプの場合、オプション名に基づいてオプションの情報を取得します

リッチテキスト列

richtext列タイプは、モジュールのリッチ テキスト フィールドと同様に機能します。

データはHTMLとして保存され、HubDB UIにテキスト編集インターフェイスが表示されます。ただし、HubSpotのUIを使用してHubDBテーブルを編集する場合、ソースコードを直接編集することはできません。これにより、技術者以外のユーザーが無効なHTMLを入力できないようにして、サイトの外観や機能に想定外の問題が発生する事態を防いでいます。埋め込みコードや追加のカスタムHTMLが必要な場合は、リッチ テキスト エディターの埋め込み機能を使用してカスタムコードを配置できます。 


参考になりましたか?
こちらのフォームではドキュメントに関するご意見をご提供ください。HubSpotがご提供しているヘルプはこちらでご確認ください。