フォーラムのコスト見積もり方法を以下に説明します。すべてのクエリは Data Explorer 向けです。
投稿あたりの平均文字数の見積もり
最後に確認した際、プラグインは調理済みテキストを翻訳サービスに送信していました。
SELECT AVG(LENGTH(p.cooked))
FROM posts AS p
JOIN topics AS t ON p.topic_id = t.id
WHERE t.archetype != 'private_message'
ユーザー訪問あたりに読まれた投稿数の見積もり
比較的最近の推定値を得るため、過去 30 日間のデータを参照しました。
-- [params]
-- int :from_days_ago = 0
-- int :duration_days = 30
WITH t AS (
SELECT CURRENT_TIMESTAMP - ((:from_days_ago + :duration_days) * (INTERVAL '1 days')) AS START,
CURRENT_TIMESTAMP - (:from_days_ago * (INTERVAL '1 days')) AS END
)
SELECT AVG(posts_read)
FROM user_visits
JOIN t ON visited_at > t.START AND visited_at < t.END
過去 30 日間のユーザー訪問数
-- [params]
-- int :from_days_ago = 0
-- int :duration_days = 30
WITH t AS (
SELECT CURRENT_TIMESTAMP - ((:from_days_ago + :duration_days) * (INTERVAL '1 days')) AS START,
CURRENT_TIMESTAMP - (:from_days_ago * (INTERVAL '1 days')) AS END
)
SELECT COUNT(1)
FROM user_visits
JOIN t ON visited_at > t.START AND visited_at < t.END
過去 30 日間に読まれた文字数の見積もり
上記 3 つの数値を掛け合わせることで、過去 30 日間に読まれた投稿の調理済み文字数の推定値を得ました。
非主要言語ユーザー数の見積もり
当フォーラムの主要言語は英語であるため、Google アナリティクスを使用して、ブラウザ設定が英語以外の言語になっているユーザーの割合を把握しました。
最終的な見積もり
その後、現在の非英語訪問者の割合を「一般的なケース」と仮定し、それを半分にした値を低めの推定値、2 倍にした値を高めの推定値として、低/中/高の 3 つの見積もりを作成しました。これにより、30 日間の文字数の低/中/高の値が得られ、それを翻訳サービスの文字単価(X 文字あたりの料金)に乗算しました。
参考になれば幸いです!