NRQL 構文、構成要素、関数

New Relic Query Language (NRQL)は、New Relic Insights の Events データベースに対して呼び出しを行うための SQL に似たクエリ言語です。ここでは、NRQL の構文や構成要素、関数(function)について説明します。

NRQL 構文

基本的な NRQL の構文規則や例については、NRQL 構文を学ぶをご覧ください。複数のイベントやカラムに対して問い合わせる NRQL を知りたい方は、複数イベントやカラムへの問い合わせをご覧ください。

NRQL で JOIN 句をシミューレートする方法を知りたい方は、カスタム属性を使って SQL の “join” をシミュレートするをご覧ください。

Insights API を使って、NRQL クエリをフォーマットする方法については、API リクエストの生成をご覧ください。

NRQL クエリの構成要素

NRQL クエリは必ず SELECT 文と FROM 句で始まります。照会したいイベントタイプを指定する場合は、FROM 句を使います。SELECT には属性関数のかたちで、データセットの一部を指定します。他の句は全てオプションです。

SELECT
すべての NRQL クエリは SELECT 文から始まります。SELECT 文は SELECT という単語で始め、カンマ区切りの引数のリストが続きます。引数の次に句はが続きます。

SELECT function(attribute) ...

SELECT 句では、クエリのレポート対象を指定します。SELECT は1つ以上の引数を取ります。各引数は、イベントに関連付いた属性もしくは、属性に作用する集約関数となります。

属性名の代わりにワイルドカードとしてアスタリスクを使うと、イベントの全属性を取得できます。

例: 以下は直近1週間の平均応答時間を返します。

SELECT average(duration) FROM PageView SINCE 1 week ago

カンマ区切りのリストを使うと複数列選択できます。またAS句を使うと、カラムにラベルを付けられます。

SHOW EVENT TYPES...

SHOW EVENT TYPES は、現在の指定している時間帯の、利用しているアカウントに現在存在するイベントタイプの一覧を返します。これは、SELECT の代わりに、クエリの先頭に指定します。

直近の1日のイベントタイプの一覧
過去1日から現在までの全イベントタイプを返すクエリです。

SHOW EVENT TYPES SINCE 1 day ago

FROM
FROM 句を使うと、問い合わせ対象の属性を含むイベントタイプを指定できます。FROM 句は必須です。構文は次のとおりです。

SELECT ...
  FROM event
  ...

例:以下は直近3日間の全 APM トランザクション数を返します。

SELECT count(*) FROM Transaction SINCE 3 days ago

カンマ区切りのリストを使うと、複数のイベントタイプに跨って、同じ属性の値をマージすることができます。

WHERE
WHERE句を使うと、ANDOR キーワードで区切った1つ以上の一連の条件を指定できます。

SELECT function(attribute) ...
  WHERE attribute [operator 'value' | IN ('value' [, 'value]) | IS [NOT] NULL ]
  [AND|OR ...]
  ...

条件は次のようになります。

  • 比較標準演算子の使用: state = 'WA'
  • IN に一致した集合: animalType IN ('cat', 'dog', 'fish')

例: 以下は、米国とカナダにいる Safari ユーザーの過去24時間の情報を返します。

SELECT histogram(duration, 50, 20) FROM PageView
  WHERE countryCode IN ('CA', 'US') AND userAgentName='Safari'
  SINCE 1 day ago

WHERE 句では、以下の演算子を使えます。

オペレーター 説明
=!=<<=>>= NRQLでは一般的な比較演算子(等号、等号否定、不等号)を使えます。

AND 2つの条件の積集合を定義するために使います。
OR 2つの条件の和集合を定義するために使います。
IS NULL 属性が null の場合、対象とします。
IS NOT NULL 属性が null でない場合、対象とします。
IN 属性の文字列が指定されたセットに含まれる場合、対象とします。IN句を使用すると、複数の WHERE 句を使う場合よりも、パフォーマンスが優れています。
NOT IN 属性の文字列値が、指定されたセットにないかどうかを判定します。NOT IN 句を使用すると、WHERE 句で同じ条件で複数指定するよりもパフォーマンスが向上します。

値は、以下のように、カンマで区切って括弧で囲む必要があります。

SELECT * FROM PageView WHERE countryCode NOT IN ('CA', 'WA')
LIKE 属性が指定された部分文字列を含んでいる場合、対象とします。

LIKE 演算子で使う文字列引数は、文字列内においてワイルドカードを示すパーセント記号(%)を指定できます。部分文字列が、対象とする文字列の先頭、最後に一致しない場合、一致しない方にワイルドカード(%)を指定します。

例:

  • userAgentName LIKE 'IE%'
    • IE
    • IE Mobile
  • userAgentName LIKE 'o%a%'
    • Opera
    • Opera Mini
  • userAgentName LIKE 'o%a'
    • Opera
  • userAgentName LIKE '%o%a%'
    • Opera
    • Opera Mini
    • Mozilla Gecko
NOT LIKE 属性が指定された部分文字列を含まない場合、対象とします。

ファンネルを使いたい場合は、カンマ区切りのリストをを使って、複数列を返します 。AS を使うと、返される列にラベルを付けることができます 。

AS
AS 句を使うと、シングルクォートで区切った文字列で、属性、集約関数、ファンネル内のステップ、集計関数の結果にラベルを付けることができます。

SELECT ...
  AS 'label'
  ...

例: 以下のクエリは、直近1週間の間にサイトのメインページと採用情報ページの両方を訪れた人の数を返します。

SELECT funnel(SESSION,
    WHERE name='Controller/about/main' AS 'Step 1',
    WHERE name = 'Controller/about/careers' AS 'Step 2')
    FROM PageView SINCE 1 week ago

例: 以下のクエリは、セッションあたりのページビュー数を返します。

SELECT count(*)/uniqueCount(session) AS 'Pageviews per Session' 
  FROM PageView

FACET
SELECT ...
  FACET attribute
  ...

FACET を使うことで、文字列の属性でデータを分割します。LIMIT キーワードにより、表示されるファセット数を指定できます。デフォルトは、10 です。さらに複雑なグループ化を行いたい場合は、FACET CASES を見てみてください。

FACET は、SELECT 句で指定した最初のフィールドを基準に降順(大きい順)にソートされます。1,000 以上の属性をファセットに指定したする場合、Insights はファセット値のサブセットを選択し、クエリタイプに従ってソートします。

min()max()count() を使っている場合、 FACET はこれらの関数を使ってファセットの選択とソート方法を決定します。これら以外の 関数を利用している場合は、FACET は、ファセットの選択及びソート方法の決定に、FACET で指定さらた属性の頻度を使用します。

count() を使った例: ページビュー数が最も多い都市を示します。都市ごとのページビューの総数を使用して、ファセットが選択され、順序付けされる方法を決定しています。

SELECT count(*) FROM PageView FACET city

uniqueCount() を使った例: ユニークな URL 数が多い都市を表示します。結果に表示される都市の合計回数を使用して、ファセットが選択され、順序付けされています。

SELECT uniqueCount(pageUrl) FROM PageView FACET city

ある特定の時間帯で結果をグループ化する
高度なセグメンテーションコホート分析を使うことで、バケツ機能を活用して、New Relic Insights でデータをより効果的に分割することができます。

コホート分析は、タイムスタンプに基づいて結果をグループ化する方法です。指定した日付と時刻のバケツに分けることができます。

SELECT ...
  FACET CASES (
    WHERE function(attribute), WHERE function(attribute), ...
    )
  ...

FACET 句では難しい、複雑な条件でデータを分割したい場合は、FACET CASES を使います。複数条件がある場合は、, (カンマ)で区切ります。たとえば、PageView データと FACET CASES を1秒未満、1秒超過、20秒超過などのカテゴリに分けてクエリできます。ケース内で複数の属性を組み合わせている場合は、AS を使ってケースにラベルを付けることができます。

一般的な使い方: WHERE と共に。
SELECT count(*) FROM PageView FACET CASES (WHERE duration > 1, WHERE duration < 1, WHERE duration > 20)
複数属性でグループ化
この例では、1つ目のバケツは、トランザクション名に、”login” が含まれているもの。もう一つのバケツは、URL に “login” が含まれており、かつ顧客タイプが有料ユーザーであるトランザクションで分けています

SELECT count(*) FROM Transaction FACET CASES (WHERE name LIKE '%login%', WHERE name LIKE '%login%' AND customer_type='Paid'
AS を使ったラベル付きグループ化
AS を使って、人に分かりやすい名前を付けます。

SELECT count(*) FROM Transaction FACET CASES (WHERE name LIKE '%login%' AS 'Total Logins', WHERE name LIKE '%login%' AND customer_type='Paid' AS 'Logins from Paid Users')

LIMIT
LIMIT 句を使うと、返される値の数を制限できます。引数として整数値を1つとります。値が指定されていない場合は、デフォルトで10となります(*クエリを使っている場合は、デフォルトは100です)。最大は1000です。

SELECT ...
  LIMIT count
  ...

例: 以下のクエリは、セッション数上位 20 カ国を示しており、Windows ユーザー限定で各国のレスポンスタイムの 95 パーセンタイルを提供しています。

SELECT uniqueCount(session), percentile(duration, 95)
  FROM PageView WHERE userAgentOS = 'Windows'
  FACET countryCode LIMIT 20 SINCE YESTERDAY

SINCE
SINCE 句を使うと、取得データの開始期間を設定できます。時間幅の指定の仕方は、数値 単位 AGO もしくは YESTERDAY です。

また、SINCE last MondaySINCE this quarter のような自然言語を使えます。さらに特定の時間帯を指定してデータを取得するには、UTC 時間を追加します。例えば、SINCE Wednesday at '8:00' を使って問い合わせると、水曜の午前 8:00 UTC から、現在時間までのデータを取得します。時間が指定されていない場合は、デフォルト値の深夜0時(0:00 UTC)となります。例えば、SINCE Tuesday を利用して問い合わせると、火曜日の 12:00 am から、現在時間までのデータを取得します。

デフォルト値は、1 時間前です。SINCE 句を指定しない場合は、過去1時間のデータを返します。

結果ではなく、クエリ用にタイムゾーンを指定できます。Insights は常に、システム時間に基づいて結果を表示します。

SELECT ...
  SINCE integer units AGO
  ...

例:

  • SINCE this hour: 現在の時間の0分から問い合わせ結果を表示
  • SINCE yesterday: 前日の深夜0時(0:00 UTC)から、現在までのデータを表示
  • SINCE Wednesday: 水曜日の午前0時(0:00 UTC)から、現在までのデータを表示
  • SINCE this week / last week: 現在の週の月曜日の午前0時から、現在時刻までのデータを表示
  • SINCE this month: 現在の月初の 00:00 UTC から、現時点までのデータを表示
  • SINCE this quarter: 前の四半期の初日の 00:00 UTC からのデータを表示

日付や時刻を指定するには、SQL スタイルのタイムスタンプ(yyyy-mm-dd HH:MM:ss)として UTC 時間を使います。シングルクォーテーションで文字列を囲みます。

また、UTC 時間を特定のタイムゾーン [英語] に変更するには、クエリ内に調整時間を含めること。例えば、UTC の西のタイムゾーンであれば、マイナス記号(-)を、東であればプラス記号(+)を含めて、時間を指定します
以下の例では、UTC の西5時間 (-0500) を指定して、北アメリカの東部標準時 (EST)を表示します。

SELECT count(*) FROM PageView SINCE '2014-08-04 00:00:00-0500'

また、タイムゾーンのラベルを含めるには、タイムゾーンの頭字語[external link] をタイムスタンプに追加します。例えば、東部標準時をクエリで明確に示すには、EST をタイムスタンプの最後に追加します。

以下の例では、UTC の西5時間 (-0500) を指定して、北アメリカの東部標準時 (EST) を表示します。

SELECT count(*) FROM PageView SINCE '2014-08-04 00:00:00 EST'

同じ略語が複数の地域で利用されることがあります。例えば、EST は、北アメリカの東部標準時やオーストラリアの東部標準時を意味します。明確にするために、UTC 時間のオフセットを数値で (-0500 は、北アメリカの EST。 +1000 はオーストラリアの EST)指定できます。

例: 以下のクエリは平均応答時間の 50、95、99 パーセンタイルを比較するチャートを提供します。

SELECT percentile(duration, 50, 95, 99)
  FROM PageView SINCE 1 week AGO

SELECT percentile(duration, 50, 95, 99)
  FROM PageView SINCE '2014-02-14 00:00:00'

UNTIL
UNTIL 句により、取得データの期間の終わりを定義できます。時間幅を指定されると、データが保存され、時間帯が終了した後に確認することができます。例えば、SINCE Monday at '08:00' UNTIL Friday at '17:00' を使って、営業日のデータを指定した場合、土曜日にそれらのデータを確認することができます。

デフォルト値は NOW です。UNTIL を使うと、デフォルト以外の終了時点を指定できます。

結果ではなく、クエリ用にタイムゾーンを指定できます。Insights は常に、システム時間に基づいて結果を表示します。

SELECT ...
  UNTIL integer units AGO
  ...

期間は、数値 単位 AGO を使って指定します。YESTERDAY も使えます。また、自然言語である UNTIL MondayUNTIL next month も使えます。

例:

  • UNTIL YESTERDAY
  • UNTIL 6 minutes AGO
  • UNTIL NOW (default)
  • UNTIL Friday
  • UNTIL 2 days AGO
  • 1 month AGO
  • UNTIL 1 week AGO

日付や時刻を指定する場合は、SQL スタイルのタイムスタンプ(yyyy-mm-dd HH:MM:ss)としてUTC時間を使います。シングルクォーテーションで文字列を囲みます。

また、UTC 時間を特定のタイムゾーン [英語] に変更するには、クエリ内に調整時間を含めること。例えば、UTC の西のタイムゾーンであれば、マイナス記号(-)を、東であればプラス記号(+)を含めて、時間を指定します
以下の例では、UTC の西5時間 (-0500) を指定して、北アメリカの東部標準時 (EST)を表示します。

SELECT count(*) FROM PageView SINCE '2014-08-04 00:00:00-0500' UNTIL '2014-08-04 01:00:00-0500'

また、タイムゾーンのラベルを含めるには、タイムゾーンの頭字語[external link] をタイムスタンプに追加します。例えば、東部標準時をクエリで明確に示すには、EST をタイムスタンプの最後に追加します。

以下の例では、UTC の西5時間 (-0500) を指定して、北アメリカの東部標準時 (EST) を表示します。

SELECT count(*) FROM PageView SINCE '2014-08-04 00:00:00 EST' UNTIL '2014-08-04 01:00:00 EST'

同じ略語が複数の地域で利用されることがあります。例えば、EST は、北アメリカの東部標準時やオーストラリアの東部標準時を意味します。明確にするために、UTC 時間のオフセットを数値で (-0500 は、北アメリカの EST。 +1000 はオーストラリアの EST)指定できます。

例: 以下のクエリは(終わりは今日ではない)指定した期間の平均応答時間の 50、95、99 パーセンタイルを比較するチャートを提供します。

SELECT percentile(duration, 50, 95, 99)
  FROM PageView SINCE 1 week AGO UNTIL 2 days ago

SELECT percentile(duration, 50, 95, 99)
  FROM PageView SINCE '2014-02-14 00:00:00' UNTIL '2014-02-20 00:00:00'

WITH TIMEZONE
タイムゾーンを選択するには、 WITH TIMEZONE 句を使います。この句を追加すると、選択可能なタイムゾーンのリストを生成し、自動的にあなたの近くの地域であろうタイムゾーンを取得します。

例えば、カルフォルニアのユーザーが、WITH TIMEZONE 句を使った場合は、タイムゾーンはのリストは、最初の選択肢として、America/Los Angeles となります。

SELECT ... WITH TIMEZONE (selected zone)
  ...

COMPARE WITH
COMPARE WITH 句により、異なる2つの期間の値を比較できます。

SELECT ... (SINCE or UNTIL) (integer units) AGO
  COMPARE WITH (integer units) AGO
  ...

COMPARE WITH を使う際は、SINCE または UNTIL ステートメントが必須です。COMPARE WITH に指定された期間は、SINCE または UNTIL に指定された期間を基準としています。例えば、SINCE 1 day ago COMPARE WITH 1 day ago は、昨日と一昨日を比較します。

COMPARE WITH における期間は、常に SINCEUNTIL で指定したものと同じです。例えば、 SINCE 2 hours ago COMPARE WITH 4 hours ago とした場合、現在が5:00PMだとすると、その2時間前から現在までの 3:00PM-5:00PMと現在から4時間前を起点としてその2時後までの1:00PM-3:00 PMを比較します。

COMPARE WITH は、折れ線グラフやビルボードとして結果を表示できます。

  • TIMESERIESを使うと、COMPARE WITH は2つの時間帯を比較する折れ線グラフを作成します。
  • TIMESERIES を使わない場合、COMPARE WITH はビルボードを生成します。COMPARE WITH 値との現在値の変化の割合をパーセントで表示します。

例: 以下のクエリは、直近1週間とその前の1週間のレスポンスタイムの95パーセンタイルを比較した値を折れ線グラフのデータを返します。以下の1つ目のクエリは値を1つ返します。2つ目は、折れ線グラフを返します。

SELECT percentile(duration) FROM PageView 
  SINCE 1 week ago COMPARE WITH 1 week AGO

SELECT percentile(duration) FROM PageView 
  SINCE 1 week ago COMPARE WITH 1 week AGO TIMESERIES AUTO

TIMESERIES
TIMESERIES 句により、指定した期間単位にまとめたデータを時系列で取得できます。

TIMESERIES は結果をウィジェットに表示するため、デフォルト値はありません。

SELECT ...
  TIMESERIES integer units
  ...

期間の指定には、integer units を使います。

例:

  • TIMESERIES 1 minute
  • TIMESERIES 30 minutes
  • TIMESERIES 1 hour
  • TIMESERIES 30 seconds

結果値を、グラフを抜け出すために使用する単位を示している。例えば、30分刻みで1日のグラフを表示するには、以下のように書きます。

SELECT ... SINCE 1 day AGO TIMESERIES 30 minutes

TIMESERIES には AUTO を指定できます。これは、ちょうどいい数にグラフを分割します。例えば、デイリーチャートは30分刻みに分割されます。ウィークリーチャートは6時間刻みに分割されます。

例: 以下のクエリは、1週間のデータを6時間刻みでクライアントサイドのトランザクション時間の50パーセンタイルと90パーセンタイルを示す折れ線グラフを返します。

SELECT average(duration), percentile(duration, 50, 90)
  FROM PageView SINCE 1 week AGO TIMESERIES AUTO
average( )percentile( ) のような関数では、大きな間隔を指定することが外れ値対策に大変有効です。

集約関数

集約関数により、SELECT ステートメントから返されるデータを絞り込んだり集計したりできます。関数は、属性名を0個以上引数として取ります。この引数により結果が返される方法が変わります。

function(attribute [, argument [, ...]])

NRQL コマンドラインツールは、関数の属性を絞り込みます。関数ごとに適した属性を示すドロップダウンメニューを表示します。例えば、userAgentName は、average() の引数の候補としては表示されません

コホート分析ページに記載されているコホート分析固有の関数もあります。 コホート関数は時間別にトランザクションを集約します。

Insights は「ダックタイピング」をサポートしていません。つまり、文字列をとして保存された浮動小数点は、文字列扱いとなります。そのため、浮動小数点を期待する関数に渡しても思うようには処理されません。

apdex(attribute, t: )
apdex 関数は、あるトランザクションもしくは、全トランザクションのApdex スコアを返します。属性は、durationbackendDurationmemcacheDuration などレスポンスタイムに関連した属性を指定できます。引数 t: には、Apdex T の閾値(秒単位)を指定します。Apdex スコアの計算方法については、Apdex: ユーザー満足度の測定をご覧ください。

カスタム属性を定義している場合は、その属性に基づいてフィルタリングできます。例えば、以下のように特に重要なクライアントの Apdex を監視できます。

SELECT apdex(duration, t: 0.4) FROM Transaction
  WHERE customerName='MrBigshot' SINCE 1 day ago

name 属性を使うと、特定のトランザクションのスコアを取得できます。name を省略した場合は、全体の Apdex スコアを返します。以下のクエリは、直近1時間におけるController/notes/indexトランザクションのApdexスコアを返します。

SELECT apdex(duration, t: 0.5) from Transaction 
  WHERE name='Controller/notes/index' SINCE 1 hour ago

以下のクエリは、直近3週間におけるアプリケーション全体の Apdex を返します。

SELECT apdex(duration, t: 0.08) FROM Transaction SINCE 3 week ago
create-apdex-function
apdex 関数は Apdex スコアを返します。引数は応答時間の属性とApdex T の閾値(秒単位)を取ります。

apdex( ) 関数を返す Apdex スコアは、実行時​​間のみに基づいた値であり、APM エラーは考慮していません。エラーが発生しているにも関わらず、Apdex T 以下で完了しているトランザクションの場合、apdex ( ) 関数は satisfying [満足]という結果を返します。

average(attribute)
average( ) 関数は、いくつかの種類の属性の平均値を返します。ファセットを指定してない場合、指定した期間の指定した属性のすべての値の平均を返します。属性が数値でない場合は、0 を返します。

この関数は引数を1つだけ取ります。複数渡された場合は、最初の引数以外はエラーなしで無視されます。属性が数値以外の場合はゼロを返します。

count(*)
count( ) 関数はイベント数を返します。引数は1つだけです。現在、この関数は典型的なSQLの動作通りであり特定のイベントまたはファセットのすべての値をカウントします。そのため、count(*) だけが意味があります。

count(*)は特定の属性を指定していません。よって、結果はデフォルトで「読みやすい」形式でフォーマットされます

...WHERE eventType() = 'EventNameHere'...
...FACET eventType()...

FACET句で eventType() 関数を使用すると、選択したイベントごとに結果を表示できます。また、WHERE 句で eventType() 関数を使うと、特定のイベントにのみ絞り込めます。これは、filter() 関数や percentage() 関数を使う際に、特定のイベントを対象としたい場合に特に便利でしょう。

filter() 関数内で eventType() を使う
このクエリは、Transaction イベントレコード数あたりの TransactionError イベントレコード数の割合を算出します。filter() 関数で、特定のイベントを対象とするために、eventType() 関数を使っています。

SELECT 100 * filter(count(*), where eventType() = 'TransactionError') / filter(count(*), where eventType() = 'Transaction') FROM Transaction, TransactionError WHERE appName = 'App.Prod' TIMESERIES 2 Minutes SINCE 6 hours ago
FACETeventType() を使う
このクエリは、選択したイベント一覧から、それぞれのイベントに含まれるレコード数で算出します。

SELECT count(*) from Event1, Event2 FACET eventType() TIMESERIES
filter(function(attribute), WHERE condition)
filter( ) 関数を使うと、SELECT 句の集約関数の1つの結果を制限できます。 FACETTIMESERIESや他のマルチファセットと一緒に、接続詞として、filter() が使えます。

例えば、filter() を使うと、Transactions から、クーポンを使ったユーザーとそうでないユーザーのアイテム購入を比較できます。

screenshot insights filter
filter( ) 関数を使って、SELECT 句の集約関数の結果を制限します。

histogram(attribute, ceiling [, buckets])

histogram( ) 関数はヒストグラムを生成します。3つの引数を取ります。

  • 属性名
  • サンプル範囲の最大値
  • 総バケット数

例: 20バケットにわたって 10 秒以内の応答時間のヒストグラムを表示。

SELECT histogram(duration, 10, 20) FROM PageView SINCE 1 week ago

keyset() を使うと、指定された期間における特定のイベントタイプの全属性を表示できます。引数はとりません。文字列型キー、数値型キー、およびすべてのキーをまとめた JSON 構造体を返します。

例: イベントタイプの全属性を表示。
このクエリは、過去1日の PageView イベントの属性を返します。

SELECT keyset() FROM PageView SINCE 1 day ago

latest(attribute)
latest( ) 関数は、指定された期間のある属性の最新の値を返します。

引数を1つ取ります。複数渡された場合は、最初の引数以外は無視されます。

FACET と組み合わせて使用する場合、ファセット別にそれぞれの属性の最新の値を返します。

SELECT latest(countryCode) FROM PageView FACET userAgentName

max(attribute)
max( ) 関数は、指定された期間に記録された数値属性の最大値を返します。

引数を1つ取ります。2番目以降の引数は無視されます。数値以外の属性が指定された場合はゼロを返します。

min(attribute)
min( ) 関数は、指定された期間に記録された数値属性の最小値を返します。

引数を1つ取ります。2番目以降の引数は無視されます。数値以外の属性が指定された場合はゼロを返します。

percentage(function(attribute), WHERE condition)
percentage( ) 関数は、条件にマッチしたターゲットのデータセットの割合を返します。

1番目の引数は必須です。対象の属性を指定した集約関数を取ります。2番目の引数で条件を設定します(3番目以降の引数を無視されます)。数値以外の属性を指定した場合、100%の値を返します。

percentile(attribute [, percentile [, ...]])

percentile( ) 関数は、指定したパーセンタイルのカウントを返します。引数に属性が必須です。そして、パーセンタイル点を表す複数の引数を指定できます。

  • TIMESERIES を使うと、時間軸に沿ってパーセンタイルを表示する折れ線グラフを生成します。
  • TIMESERIES を省略すると、ビルボードとパーセンタイルの集計値を示す属性の表を返します。

パーセンタイルのリストがない場合、デフォルトは95パーセンタイルです。

例: 以下は 5、50、95 パーセンタイルのラインを持つ折れ線グラフを生成します。

SELECT percentile(duration, 5, 50, 95) FROM PageView TIMESERIES AUTO
stddev(attribute)
stddev() 関数を使うと、指定した期間において、数値属性に対する1つの標準偏差[external link] を返します。
引数を1つとります。2番目以降の引数は無視されます。属性が数値でない場合 0 を返します。

sum(attribute)
sum( ) 関数は、指定した期間に記録された数値属性の合計を返します。

引数を1つ取ります。2番目以降の引数は無視されます。数値以外の属性が指定された場合はゼロを返します。

uniqueCount(attribute)
uniqueCount( ) 関数は、指定した期間に記録された属性のユニークな値の数を返します。

引数を1つ取ります。2番目以降の引数は無視されます。

uniques(attribute)
uniques( ) 関数は、指定した期間に渡って記録された属性のユニークな値のリストを返します。

引数を1つ取ります。2番目以降の引数は無視されます。