ホーム / 集計の透明性

集計の透明性

このページでは、このサイトで公開している閲覧数の集計方法を説明します。閲覧数はCloudflare Analytics Engineから取得しています。

このサイトを訪れた人を、それぞれ1回の閲覧として数えています。この数値はWorkers Analytics Engineから読み取っています。

閲覧数が集計されるまで

  1. 1 訪問者がサイトを開く このサイトを訪れた人を、それぞれ1回の閲覧として数えます。
  2. 2 サイトがCloudflareに通知する 訪問の情報をCloudflareに送信し、記録します。
  3. 3 Cloudflareが訪問を保存する Workers Analytics Engineが、1つのデータポイントとして保存します。
  4. 4 集計結果がサイトに返る サイトが合計を読み取り、閲覧数として表示します。
  1. 1

    訪問者がサイトを開く

    このサイトを訪れた人を、それぞれ1回の閲覧として数えます。

  2. 2

    サイトがCloudflareに通知する

    訪問の情報をCloudflareに送信し、記録します。

  3. 3

    Cloudflareが訪問を保存する

    Workers Analytics Engineが、1つのデータポイントとして保存します。

  4. 4

    集計結果がサイトに返る

    サイトが合計を読み取り、閲覧数として表示します。

閲覧の記録はCloudflareに書き込まれ、読み出された集計結果がページに表示されます。

Workers Analytics Engineは、分類項目をあらかじめ固定することなく、項目が増えても集計データを保存できるCloudflareのサービスです。Cloudflareは、分類の種類数に上限を設けず、大規模な分析に対応できる仕組みと説明しています。Workerが組み込みAPIを通じてデータポイントを書き込み、その後、同じアカウントがHTTP SQL APIを通じてSQLでデータを読み出します。このSQLの方言は、Cloudflareが別途提供しているAnalytics SQL APIのものとは異なります。

datasetはデータの保存単位です。CloudflareはdatasetをSQLのテーブルになぞらえています。各行と各列は、それぞれ一貫した意味を持つ必要があります。datasetの名前はWorkerの設定で指定し、Workerに紐付けます。Workerが書き込みを始めるとテーブルが作成されます。列を別途定義する手順はありません。

データポイントは1件のイベントを表す、1行のデータです。Workerがイベントを記録すると、Cloudflareがtimestampを付加します。それ以外のデータはすべてWorkerが渡し、毎回同じ順序で渡す必要があります。Cloudflareは、この順序に沿った各格納位置をフィールドと呼んでいます。

フィールドとは、その並びの中の1つの位置です。最初の文字列は常に1番目の文字列フィールドに、2番目の数値は常に2番目の数値フィールドに入ります。データベースは値に名前を添えて保存するのではなく、位置に基づいて保存します。順序を変えると、フィールドの意味も変わります。クエリでは、それぞれの位置が列として扱われます。文字列フィールドはblob1からblob20、数値フィールドはdouble1からdouble20です。サンプリングに使うキーはindex1です。すべての行にはtimestamp、dataset、_sample_intervalも含まれます。クエリでは、目的に応じてフィールドに別名を付けられます。たとえば、blob1 AS cityと指定できます。ただし、保存されているフィールドはblob1のままです。

フィールドとは

  1. 順番に並べた文字列 場所など、後でグループ化する際に使うラベルです。
    blob1, then blob2, up to blob20 Cloudflareで使われる、このフィールドの名前です。
  2. 順番に並べた数値 合計や平均を求める対象となる測定値です。
    double1, then double2, up to double20 Cloudflareで使われる、このフィールドの名前です。
  3. 1つのインデックス 大量のイベントをサンプリングする必要がある場合に、Cloudflareが使うキーです。
    index1 Cloudflareで使われる、このフィールドの名前です。
  4. Cloudflareが付加する時刻 イベントが書き込まれた日時です。
    timestamp Cloudflareで使われる、このフィールドの名前です。
  5. Cloudflareが付加するサンプルの大きさ 保存されたこの行が、元のイベント何件分を表すかを示します。
    _sample_interval Cloudflareで使われる、このフィールドの名前です。
  1. 順番に並べた文字列

    場所など、後でグループ化する際に使うラベルです。

    保存時のフィールド名 blob1, then blob2, up to blob20

  2. 順番に並べた数値

    合計や平均を求める対象となる測定値です。

    保存時のフィールド名 double1, then double2, up to double20

  3. 1つのインデックス

    大量のイベントをサンプリングする必要がある場合に、Cloudflareが使うキーです。

    保存時のフィールド名 index1

  4. Cloudflareが付加する時刻

    イベントが書き込まれた日時です。

    保存時のフィールド名 timestamp

  5. Cloudflareが付加するサンプルの大きさ

    保存されたこの行が、元のイベント何件分を表すかを示します。

    保存時のフィールド名 _sample_interval

各フィールドの位置は変わりません。クエリでは目的に応じてblob1に別名を付けられますが、保存されているフィールドはblob1のままです。

フィールドには3つの種類があります。Blobは文字列です。Cloudflareはこれを、グループ化や絞り込みに使う「ディメンション」と呼んでいます。他のシステムでいう「ラベル」に当たります。1つのデータポイントには最大20個のBlobを含められ、合計サイズは16キロバイト以内に収める必要があります。Doubleは数値で、合計や平均を求める対象の測定値です。1つのデータポイントには最大20個のDoubleを含められます。インデックスは、最大96バイトの文字列1つです。書き込み時にはリストを渡せますが、Cloudflareがデータポイントを保存するのは、そのリストにインデックスが1つだけ含まれている場合に限られます。2つ目のインデックスがあると、そのデータポイントは記録されません。

データ量が非常に多い場合、Analytics Engineはクエリの速度を保つためにデータをサンプリングします。サンプリングは書き込み時と読み出し時の両方で行われる可能性があり、インデックスごとに適用されます。イベント数の多いインデックスではサンプリングが行われる一方、少ないインデックスでは全件が保持される場合があります。保存される各行には、その行が元のイベント何件分を表すかを示す_sample_intervalが含まれます。件数は_sample_intervalの合計で求めます。測定値の合計を求める場合は、まず各測定値に_sample_intervalを掛けてから合算します。平均は、この重み付き合計を_sample_intervalの合計で割って求めます。

Workerの1回の実行で書き込めるデータポイントは最大250件です。データの保存期間は3か月です。