μ’μ NRQL 쿼리λ₯Ό μμ±νλ €λ©΄ λ΄λ λ¦μ λ€μν NRQL μ κ³Ό ν¨μκ° μλνλ λ°©μμ μ΄ν΄νλ κ²μ΄ λμμ΄ λ©λλ€. μ΄ λ¬Έμμλ NRQL μ λ° ν¨μμ μ μκ° ν¬ν¨λμ΄ μμΌλ©° μ¬μ© λ°©λ²μ λν μμκ° μ 곡λ©λλ€.
κΈ°λ³Έ NRQL ꡬ문 κ·μΉμ μ°Ύκ³ κ³μλκΉ? NRQL μ¬μ© λ°©λ²μ μ°Έμ‘°νμμμ€. μ§μΉ¨μκ° νμνμλ©΄ μ λ¬Έ NRQL νν 리μΌμ μ°Έμ‘°νμμμ€.
쿼리 κ΅¬μ± μμ
κΈ°λ³Έ NRQL ꡬ문 λ¬Έμμ λͺ
μλ λ°μ κ°μ΄ λͺ¨λ NRQL 쿼리μλ SELECT
μ κ³Ό FROM
μ μ΄ ν¬ν¨λλ©° λ€λ₯Έ λͺ¨λ μ μ μ ν μ¬νμ
λλ€. μλμ μ μ μμλ μμ NRQL 쿼리λ ν¬ν¨λμ΄ μμ΅λλ€.
νμ μ‘°ν
SELECT attribute ...
SELECT function(attribute) ...
SELECT
λ μμ± λλ ν¨μλ₯Ό μ§μ νμ¬ λ°μ΄ν° μ νμ 쿼리ν λΆλΆμ μ§μ ν©λλ€. κ·Έ λ€μ μΌνλ‘ κ΅¬λΆλ νλ μ΄μμ μΈμκ° μ΅λλ€. κ° μΈμμμ λ€μμ μνν μ μμ΅λλ€.
*
λ₯Ό μμΌλμΉ΄λλ‘ μ¬μ©νμ¬ μ¬μ© κ°λ₯ν λͺ¨λ μμ±μ κ°μ κ°μ Έμ΅λλ€. μ:SELECT * from Transaction
.- μ§μ λ μμ± λλ μΌνλ‘ κ΅¬λΆλ λͺ©λ‘μ μ§μ λ μ¬λ¬ μμ±κ³Ό μ°κ²°λ κ°μ κ°μ Έμ΅λλ€.
- μ§κ³ ν¨μλ₯Ό μ ννμ¬ μ§μ λ μμ±μμ μ§κ³λ κ°μ κ°μ Έμ΅λλ€.
AS
μ‘°νμ μ¬μ©νμ¬ κ° μΈμμ λ°νλ κ²°κ³Όμ λ μ΄λΈμ μ§μ ν©λλ€.
κΈ°λ³Έ μν ν¨μμ ν¨κ» SELECT
λ₯Ό μ¬μ©ν μλ μμ΅λλ€.
μ΄ μΏΌλ¦¬λ μ§λμ£Ό μ΄νμ νκ· μλ΅ μκ°μ λ°νν©λλ€.
SELECT average(duration) FROM PageView SINCE 1 week ago
λμΌν SELECT
λ¬Έμ *
μμΌλμΉ΄λμ κ°λ³ μμ±, ν¨μ, μν ννμ, NRQL λ³μλ₯Ό λͺ¨λ ν¬ν¨ν μ μμ΅λλ€. *
κ° SELECT
λͺ©λ‘μ μμ λλ λμ λνλ μ μμΌλ©°, μ νλ μΆκ° μ΄μ κ°κ° κ²°κ³Ό νμ μμ λλ λμ λνλ©λλ€.
SELECT *, attribute, function(attribute), attribute1 + attribute2 FROM ...
WITH attribute1 + attribute2 AS attrSum SELECT attrSum, attribute, function(attribute), * FROM ...
μ΄ μΏΌλ¦¬λ μμ λΆλΆμ μΆκ° μ΄μ΄ ν¬ν¨λ λͺ¨λ μ¬μ© κ°λ₯ν PageView μμ±μ λ°νν©λλ€.
WITH concat('(', asnLatitude, ', ', asnLongitude, ')') AS coordinatesSELECT coordinates, city, connectionSetupDuration + pageRenderingDuration AS partialDuration, *FROM PageView
![select star with additional columns select star with additional columns](/images/nrql_screenshot-select-star-with-additional-columns.webp)
SELECT *
with additional columns example (μΆκ° μ΄ ν¬ν¨ μμ)
ν
SELECT
λͺ©λ‘μ *
μ μ§κ³μκ° μλ ν¨μλ§ μ§μν©λλ€.
SELECT ...FROM data type...
쿼리ν λ°μ΄ν° μ νμ μ§μ νλ €λ©΄ FROM
μ μ μ¬μ©ν©λλ€.FROM
λλ SELECT
λ‘ μΏΌλ¦¬λ₯Ό μμν μ μμ΅λλ€. μΌνλ‘ κ΅¬λΆλ λͺ©λ‘μ μ¬λ¬ λ°μ΄ν° μ νμμ λμΌν μμ±μ κ°μ λ³ν©ν μ μμ΅λλ€.
μ΄ μΏΌλ¦¬λ μ§λ 7μΌ λμμ λͺ¨λ APM νΈλμμ μλ₯Ό λ°νν©λλ€.
SELECT count(*) FROM Transaction SINCE 7 days ago
μ΄ μΏΌλ¦¬λ μ§λ 3μΌ λμμ λͺ¨λ APM νΈλμμ λ° λΈλΌμ°μ μ΄λ²€νΈ μλ₯Ό λ°νν©λλ€.
SELECT count(*) FROM Transaction, PageView SINCE 3 days ago
lookup()
)μ μ°Έμ‘°νμμμ€.
μ΅μ μ‘°ν
SELECT ...AS 'label'...
AS
μ μ μ¬μ©ν΄ μμ λ°μ΄νλ‘ κ΅¬λΆλ λ¬Έμμ΄λ‘ μμ±, μ§ν©μ, νΌλμ λ¨κ³ λλ μν ν¨μ κ²°κ³Όμ λ μ΄λΈμ μ§μ ν©λλ€. λ μ΄λΈμ κ²°κ³Ό μ°¨νΈμ μ¬μ©λ©λλ€. FACET
μ μ μ¬μ©νλ κ²½μ°, μκ³μ΄ μ°¨νΈμ AS
μ λ μ΄λΈμ΄ νμλμ§ μλλ€λ μ μ μ μνμκΈ° λ°λλλ€.
μ΄ μΏΌλ¦¬λ μΈμ λΉ νμ΄μ§ λ·° μλ₯Ό λ°νν©λλ€.
SELECT count(*)/uniqueCount(session) AS 'Pageviews per Session'FROM PageView
μ΄ μΏΌλ¦¬λ μ§λ μ£Όμ μ¬μ΄νΈμ λ©μΈ νμ΄μ§μ μ±μ© μ 보 νμ΄μ§λ₯Ό λͺ¨λ λ°©λ¬Έν μ¬λλ€μ μλ₯Ό λ°νν©λλ€.
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 ... (SINCE or UNTIL) (integer units) AGOCOMPARE WITH (integer units) AGO...
COMPARE WITH
μ‘°νμ μ¬μ©νμ¬ μλ‘ λ€λ₯Έ λ μκ° λ²μμ κ°μ λΉκ΅ν©λλ€.
COMPARE WITH
SINCE
λλ UNTIL
λ¬Έμ΄ νμν©λλ€. COMPARE WITH
μ μν΄ μ§μ λ μκ°μ SINCE
λλ UNTIL
μ μν΄ μ§μ λ μκ°μ μλμ μ
λλ€. μλ₯Ό λ€μ΄, SINCE 1 day ago COMPARE WITH 1 day ago
λ μ΄μ μ μ λ μ λΉκ΅ν©λλ€.
COMPARE WITH
κ°μ μκ° λ²μλ νμ SINCE
λλ UNTIL
λ‘ μ§μ λ μκ° λ²μμ λμΌν©λλ€. μλ₯Ό λ€μ΄ SINCE 2 hours ago COMPARE WITH 4 hours ago
λ μ€ν 3μλΆν° μ€ν 5μκΉμ§λ₯Ό μ€μ 11μλΆν° μ€ν 1μκΉμ§ λΉκ΅ν μ μμ΅λλ€.
COMPARE WITH
λΌμΈ μ°¨νΈ λλ λΉλ³΄λ νμμ μ§μ ν μ μμ΅λλ€.
TIMESERIES
λ₯Ό μ¬μ©νμ¬,COMPARE WITH
λ λΉκ΅κ° μκ°μ λ°λΌ 맀νλ λΌμΈ μ°¨νΈλ₯Ό λ§λλλ€.TIMESERIES
κ° μμΌλ©΄COMPARE WITH
λ νμ¬ κ°κ³ΌCOMPARE WITH
κ°μ λ°±λΆμ¨ λ³κ²½μΌλ‘ λΉλ³΄λλ₯Ό μμ±ν©λλ€.
Exampleμ΄ μΏΌλ¦¬λ 1μ£ΌμΌ μ μ λμΌν λ²μμ λΉκ΅ν΄ μ§λ μ£Όμ 95λ²μ§Έ λ°±λΆμμλ₯Ό 보μ¬μ£Όλ μ ν μ°¨νΈλ‘ λ°μ΄ν°λ₯Ό λ°νν©λλ€. μ²μμλ λ¨μΌ κ°μΌλ‘, κ·Έ λ€μμλ μ ν μ°¨νΈλ‘ 보μ¬μ€λλ€.
SELECT percentile(duration, 95) FROM PageViewSINCE 1 week ago COMPARE WITH 1 week AGO
SELECT percentile(duration, 95) FROM PageViewSINCE 1 week ago COMPARE WITH 1 week AGO TIMESERIES AUTO
μ€μ
COMPARE WITH
μ μ¬μ©νλ FACET
쿼리μ κ²½μ°, κ²°κ³Όλ‘ μΌκΈ°λλ ν¨μ―μ λΉκ΅λλ μ΄μ μκ° λ²μκ° μλλΌ SINCE
λ° UNTIL
μ μ¬μ©νμ¬ μ§μ λ μκ° λ²μλ₯Ό κΈ°λ°μΌλ‘ μ νλ©λλ€. μ΄μ μκ° λ²μμ λν FACET
쿼리μ κ²°κ³Όμλ§ λ€λ₯Έ ν¨μ― μΈνΈκ° ν¬ν¨λ μ μμ΅λλ€.
λ€μ λ°μ΄ν° μ νκ³Ό ν¨κ» μ΄ μ‘°νμ μ¬μ©ν μ μμ΅λλ€.
Transaction
TransactionError
μμ΄μ νΈ APIλ₯Ό ν΅ν΄ λ³΄κ³ λλ 컀μ€ν μ΄λ²€νΈ
EXTRAPOLATE
μ λͺ©μ μ 쿼리 κ²°κ³Όκ° μμ€ν μ μ΄ νλμ λ κ°κΉκ² λνλ΄λλ‘ μ΄λ²€νΈ λ°μ΄ν°μ APM μμ΄μ νΈ μνλ§ ν¨κ³Όλ₯Ό μνμ μΌλ‘ 보μ νλ κ²μ λλ€.μ΄ μ‘°νμ APM μμ΄μ νΈκ° λ무 λ§μ μ΄λ²€νΈλ₯Ό λ³΄κ³ νμ¬ μ’ μ’ νλ² μ€νΈ μ£ΌκΈ° λ³΄κ³ νλλ₯Ό λμ΄κ° λ μ μ©ν©λλ€. μ΄ κ²½μ° μμ΄μ νΈλ μ΄λ²€νΈλ₯Ό μνλ§νκΈ° μμν©λλ€.
μ¬μ©μ μ§μνλ NRQL 쿼리μμ
EXTRAPOLATE
κ° μ¬μ©λλ κ²½μ° reported events μ total events μ¬μ΄μ λΉμ¨μ μνλ§λμ§ μμ μ΄ λ°μ΄ν°μ κ°κΉμ΄ κ·Όμ¬μΉλ₯Ό μΈμ½ν©λλ€. μ¬μ©μ μ§μνμ§ μκ±°λ μνλ§λ λ°μ΄ν°λ₯Ό μ¬μ©νμ§ μμ NRQL 쿼리μ μ¬μ©νλ©΄ ν¨κ³Όκ° μμ΅λλ€.μ€μ
EXTRAPOLATE
λ μ²λ¦¬λμ΄λ μ€λ₯μ¨κ³Ό κ°μ λμ’ λ°μ΄ν°μ κ°μ₯ μ μ©ν©λλ€. κ³ μ ν νλͺ©μ μ(μ:uniqueCount()
λλuniques()
)λ₯Ό μΈμ½νλ €κ³ μλν λλ ν¨κ³Όμ μ΄μ§ μμ΅λλ€.μ΄ μ‘°νμ λ€μ μ§κ³ κΈ°λ₯ μ€ νλλ₯Ό μ¬μ©νλ NRQL 쿼리μμλ§ μλν©λλ€.
apdex
average
count
histogram
sum
percentage
(μΈμλ‘ μ·¨νλ ν¨μκ°EXTRAPOLATE
λ₯Ό μ§μνλ κ²½μ°)rate
(μΈμλ‘ μ·¨νλ ν¨μκ°EXTRAPOLATE
λ₯Ό μ§μνλ κ²½μ°)stddev
μ΄λ¦μ΄
interestingApplication
μΈ μλΉμ€μ μΈμ½ μ²λ¦¬λμ νμνλ 쿼리μ λλ€.SELECT count(*) FROM Transaction WHERE appName='interestingApplication' SINCE 60 minutes ago EXTRAPOLATEμκ³μ΄λ‘ νμλλ νΈλμμ μ΄λ¦λ³λ‘ μ΄λ¦μ΄
interestingApplication
μΈ μλΉμ€μ μΈμ½ μ²λ¦¬λμ νμνλ 쿼리μ λλ€.SELECT count(*) FROM Transaction WHERE appName='interestingApplication'SINCE 60 minutes ago FACET name TIMESERIES 1 minute EXTRAPOLATE
SELECT ...FACET attribute...
FACET
μ μ¬μ©νμ¬ μμ± κ°μΌλ‘ κ²°κ³Όλ₯Ό λΆλ¦¬νκ³ κ·Έλ£Ήνν©λλ€. μλ₯Ό λ€μ΄ deviceType
μΌλ‘ FACET
PageView
λ°μ΄ν°λ₯Ό μ¬μ©νμ¬ λͺ¨λ°μΌ, νλΈλ¦Ώ λ° λ°μ€ν¬ν± κΈ°κΈ°μμ λ°μνλ νΈλν½μ λΉμ¨μ νμ
ν μ μμ΅λλ€.
LIMIT
μ‘°νμ μ¬μ©νμ¬ νμλλ ν¨μ― μλ₯Ό μ§μ ν©λλ€(κΈ°λ³Έκ°μ 10). λ 볡μ‘ν κ·Έλ£Ήνμ κ²½μ° FACET CASES
λ₯Ό μ¬μ©ν©λλ€. FACET
μ‘°νμ μΌνλ‘ κ΅¬λΆλ μ΅λ 5κ°μ μμ±μ μ§μν©λλ€.
ν¨μ―μ SELECT
μ μ μ 곡ν 첫 λ²μ§Έ νλλ₯Ό κΈ°μ€μΌλ‘ λ΄λ¦Όμ°¨μμΌλ‘ μ λ ¬λ©λλ€. κ³ μ κ°μ΄ 5,000κ°κ° λλ μμ±μ ν¨μ―νλ κ²½μ°, ν¨μ― κ°μ νμ μ§ν©μ΄ μ νλμ΄ μΏΌλ¦¬ μ νμ λ°λΌ μ λ ¬λ©λλ€. μκ³μ΄ μ°¨νΈκ° λ°μ΄ν°λ₯Ό λ°ννμ§ μλ κ²½μ°(NRQLμ΄ μΌμΉνλ λ°μ΄ν°κ° μκ±°λ μ ν¨νμ§ μμ NRQL λ±), FROM
μ μ 첫 λ²μ§Έ ν
μ΄λΈκ³Ό 맀μΉνλ λ μ΄λΈμ΄ μλ ννν μ λ§ νμλ©λλ€.
min()
, max()
, percentile()
, average()
λλ count()
λ₯Ό μ νν λ FACET
μ μ΄λ¬ν ν¨μλ₯Ό μ¬μ©νμ¬ ν¨μ―μ μ ννκ³ μ λ ¬νλ λ°©λ²μ κ²°μ ν©λλ€. λ€λ₯Έ κΈ°λ₯μ μ νν λ FACET
μ ν¨μ― μ ν λ° μ λ ¬ λ°©λ²μ κ²°μ νκΈ° μν΄ ν¨μ― λμ μμ±μ λΉλλ₯Ό μ¬μ©ν©λλ€.
μ΄ μΏΌλ¦¬λ νμ΄μ§λ·° μκ° κ°μ₯ λμ λμλ₯Ό 보μ¬μ€λλ€. μ΄ μΏΌλ¦¬λ λμλΉ μ΄ νμ΄μ§λ·° μλ₯Ό μ¬μ©νμ¬ ν¨μ―μ΄ μ νλκ³ μ λ ¬λλ λ°©μμ κ²°μ ν©λλ€.
SELECT count(*) FROM PageView FACET city
μ΄ μΏΌλ¦¬λ κ°μ₯ λ§μ μμ κ³ μ URLμ μ‘μΈμ€νλ λμλ₯Ό 보μ¬μ€λλ€. μ΄ μΏΌλ¦¬λ κ²°κ³Όμ νΉμ λμκ° λνλλ μ΄ νμλ₯Ό μ¬μ©νμ¬ ν¨μ―μ΄ μ νλκ³ μ λ ¬λλ λ°©λ²μ κ²°μ ν©λλ€.
SELECT uniqueCount(pageUrl) FROM PageView FACET city
κ³ κΈ μΈλΆν λ° μ½νΈνΈ λΆμμ ν΅ν΄ λ²ν· κΈ°λ₯μ ν¨μ―νμ¬ λ°μ΄ν°λ₯Ό λ³΄λ€ ν¨κ³Όμ μΌλ‘ λΆλ₯ν μ μμ΅λλ€.
μ½νΈνΈ λΆμμ νμμ€ν¬νλ₯Ό κΈ°λ°μΌλ‘ κ²°κ³Όλ₯Ό κ·Έλ£Ήννλ λ°©λ²μ λλ€. μ§μ λ λ μ§ λ° μκ° λ²μλ₯Ό ν¬ν¨νλ λ²ν·μΌλ‘ λΆλ¦¬ν μ μμ΅λλ€.
μ€μ
ν¨μλ₯Ό μ¬μ©νμ¬ μμ± κ°μ μ§κ³ν λ, 쿼리μ 첫 λ²μ§Έ ν¨μμμ μ§κ³λλ μμ±μ nullμ΄ μλ κ°μ΄ ν¬ν¨λμ΄ μμ΄μΌ ν©λλ€. ν¨μ―μ 첫 λ²μ§Έ ν¨μμ μμ±μ λν΄ nullμ΄ μλ κ°μ ν¬ν¨νλ νμ λν΄μλ§ μ νλ©λλ€.
μ:
FROM Event SELECT average(attribute) FACET name
μμ±μ΄ nullμ΄ μλ νμμλ§ μ΄λ¦μ΄ μ νλ©λλ€.
ν¨μμμ μ¬μ© μ€μΈ μμ±μ nullμ΄ μλ κ°μ΄ ν¬ν¨λμ΄ μλμ§ νμΈνλ €λ©΄ λ€μ 쿼리λ₯Ό μ€νν©λλ€.
FROM Event SELECT attribute, name WHERE attribute IS NOT NULL
쿼리μμ AS
ν€μλλ₯Ό μ¬μ©νμ¬ ν¨μ―μ μ΄λ¦μ μ§μ νλ €λ©΄ FACET ... AS
λ₯Ό μ¬μ©ν©λλ€. μ΄ μ‘°νμ κ²°κ³Όμμ ν¨μ―μ λν΄ λ λͺ
ννκ±°λ λ¨μνλ μ΄λ¦μ μΆκ°νλ λ° μ μ©ν©λλ€. λν μ€μ²© μ§κ³ 쿼리μμ ν¨μ―μ μ΄λ¦μ λ°κΎΈλ λ° μ¬μ©ν μλ μμ΅λλ€.
FACET ... AS
쿼리λ κ²°κ³Όμ ν¨μ― μ΄λ¦μ λ³κ²½νμ§λ§(μ: ν
μ΄λΈμ ν€λλ‘ λνλ λ) μ€μ ν¨μ― μ΄λ¦ μ체λ λ³κ²½νμ§ μμ΅λλ€.
FROM Transaction SELECT count(*) FACET response.headers.contentType AS 'content type'
SELECT ...FACET CASES ( WHERE attribute operator value, WHERE attribute operator value, ...)...
FACET
λ³΄λ€ λ 볡μ‘ν 쑰건μΌλ‘ λ°μ΄ν°λ₯Ό μΈλΆννλ €λ©΄ FACET CASES
λ₯Ό μ¬μ©ν©λλ€. μ¬λ¬ 쑰건μ μΌν(,
)λ‘ κ΅¬λΆν©λλ€. μλ₯Ό λ€μ΄, PageView
λ°μ΄ν°μ FACET CASES
λ₯Ό 1μ΄ λ―Έλ§, 1-10μ΄, 10μ΄ μ΄κ³Ό λ±μ μΉ΄ν
κ³ λ¦¬λ‘ μΏΌλ¦¬ν μ μμ΅λλ€. μΌμ΄μ€ λ΄μμ μ¬λ¬ μμ±μ κ²°ν©νκ³ , AS
μ νκΈ°λ‘ μΌμ΄μ€μ λΌλ²¨μ μ§μ ν μ μμ΅λλ€. λ°μ΄ν° ν¬μΈνΈλ μ΅λ νλ, μ¦ λ§€μΉνλ 첫 λ²μ§Έ ν¨μ― μΌμ΄μ€μ μΆκ°λ©λλ€.
μμ±κ³Ό ν¨κ» μκ° ν¨μλ₯Ό μ¬μ©ν μλ μκ³ OR
μ°μ°μλ₯Ό μ¬μ©νμ¬ μ§μ λ μΌμ΄μ€μ μΌμΉνμ§ μλ κ²°κ³Όλ₯Ό ν¨μ―ν μ μμ΅λλ€.
SELECT count(*) FROM PageView FACET CASES ( WHERE duration < 1, WHERE duration > 1 AND duration < 10, WHERE duration > 10)
μ΄ μμμλ νΈλμμ
μ΄λ¦μ login
μ΄ ν¬ν¨λ λ²ν·κ³Ό URLμ login
μ΄ ν¬ν¨λκ³ μ¬μ©μ μ§μ μμ±μ΄ μ¬μ©μκ° μ λ£ μ¬μ©μμμ λνλ΄λ λ²ν·μΌλ‘ κ²°κ³Όλ₯Ό κ·Έλ£Ήνν©λλ€.
SELECT count(*) FROM Transaction FACET CASES ( WHERE name LIKE '%login%', WHERE name LIKE '%feature%' AND customer_type = 'Paid')
μ΄ μμμλ AS
μ νκΈ°λ₯Ό μ¬μ©νμ¬ κ²°κ³Όμ μ¬λμ΄ μ½μ μ μλ μ΄λ¦μ μ§μ ν©λλ€.
SELECT count(*) FROM Transaction FACET CASES ( WHERE name LIKE '%login%' AS 'Total Logins', WHERE name LIKE '%feature%' AND customer_type='Paid' AS 'Feature Visits from Paid Users')
μ΄ μμμλ OR
μ°μ°μλ₯Ό μ¬μ©νμ¬ μ¬λ‘μ μΌμΉνμ§ μλ κ²°κ³Όλ₯Ό ν¨μ―ν©λλ€.
SELECT count(*) FROM Transaction FACET CASES ( WHERE name LIKE '%login%', WHERE name LIKE '%feature%' AND customer_type='Paid') OR name
NRQLμμ κΈ°λ³Έκ°μ 쿼리μμ ν¨μ― μ νμ μλ΄νλ SELECT
μ μ 첫 λ²μ§Έ μ§κ³μ
λλ€. FACET ... ORDER BY
λ₯Ό μ¬μ©νλ©΄ ν¨μ― μ ν λ°©λ²μ μ§μ νλORDER BY
μμ μμ ν¨κ» μ§κ³ ν¨μλ₯Ό μΆκ°νμ¬ κΈ°λ³Έ λμμ μ¬μ μν μ μμ΅λλ€. νΉν μ΄ μ μ LIMIT
μ μ μν΄ μ νλκΈ° μ μ ν¨μ―μ΄ μ΅μ’
κ²°κ³Όμ ν¬ν¨λλλ‘ μ νμ μ°μ μμλ₯Ό μ¬μ μν©λλ€. μ΄ μ μ 쿼리μ μ¬μ©ν μ μμ§λ§ μλ¦Ό λλ μ€νΈλ¦¬λ°μλ μ¬μ©ν μ μμ΅λλ€.
μ΄ μμμλ FACET ... ORDER BY
λ₯Ό μ¬μ©νμ¬ μ± νΈλμμ
μ νκ· κΈ°κ°μ μ°Ύλ λ°©λ²μ 보μ¬μ£Όλ©° μλ΅ ν¬κΈ°κ° κ°μ₯ λμ μ±λ³λ‘ μμ 10κ°(κΈ°λ³Έ μ ν)μ κ°μ₯ λμ κΈ°κ°μ 보μ¬μ€λλ€. μ΄ κ²½μ° FACET ... ORDER BY
κ° μ¬μ©λμ§ μμΌλ©΄ 쿼리 κ²°κ³Όλ λμ κ°μ₯ λμ κΈ°κ°λ³λ‘ μμ 10κ°λ₯Ό νμνλ©° μλ΅ ν¬κΈ°λ μ± μ νκ³Ό κ΄λ ¨μ΄ μμ΅λλ€.
FROM Transaction SELECT average(duration) TIMESERIES FACET appName ORDER BY max(responseSize)
FACET ... ORDER BY
μ μ μ¬μ©νλ κ²½μ° ASC
λ° DESC
μμ μλ₯Ό μΆκ°νμ¬ μ λ ¬ μμλ₯Ό λ³κ²½ν μ μμ΅λλ€. κΈ°λ³Έμ μΌλ‘ μ΄ μ μ DESC
λ₯Ό μ¬μ©ν©λλ€.
ν
μμ
μ LIMIT
μ‘°νμ΄ μ μ©λκΈ° μ μ μνλκΈ° λλ¬Έμ FACET ... ORDER BY
λ μ΅μ’
쿼리 κ²°κ³Όμ μ λ ¬μ μν₯μ λ―ΈμΉμ§ μμΌλ©°, μ΄λ μκ³μ΄μ΄ μλ 쿼리μ κ²°κ³Όμμ νΉν λλλ¬μ§λλ€.
μ€μ
μ΄ κ²½μ° ORDER BY
μμ μλ ORDER BY
μ‘°νκ³Ό λ€λ₯΄κ² μλν©λλ€. FACET attribute1 ORDER BY attribute2
νμμ λ°λ₯΄λ 쿼리λ₯Ό ꡬ문 λΆμν λ λ΄λ λ¦μ μ΄λ¬ν 쿼리λ₯Ό FACET ... ORDER BY
μΏΌλ¦¬λ‘ μ½μ§λ§ ORDER BY
κ° FACET
λ°λ‘ λ€μ λνλλ κ²½μ°μλ§ κ°λ₯ν©λλ€. κ·Έλ μ§ μμΌλ©΄ ORDER BY
λ λ΄λ λ¦μ μν΄ μ‘°νλ‘ ν΄μλ©λλ€.
JOIN
μ μ μ¬μ©νλ©΄, ν μ΄λ²€νΈ μ νμ λ°μ΄ν°λ₯Ό κ³΅ν΅ μμ± λλ ν€λ₯Ό κΈ°λ°μΌλ‘ νμ 쿼리μ κ²°κ³Όμ κ²°ν©ν μ μμ΅λλ€.
FROM Event [INNER|LEFT] JOIN (SELECT... FROM...) ON [key =] key SELECT ...
νμ 쿼리 κ²°ν©μλ λͺ κ°μ§ κ°λ¨ν κ·μΉμ΄ μ‘΄μ¬ν©λλ€.
JOIN
μ μ νμFROM
μ λ°λ‘ λ€μ μμΌ ν©λλ€.- κ²°ν© μ ν(
INNER
λλLEFT
) μ λμ¬λ μ ν μ¬νμ λλ€. μ νμ νμ§ μμΌλ©΄ κ²°ν© μ νμINNER
λ‘ κΈ°λ³Έ μ€μ λ©λλ€. - νμ 쿼리λ₯Ό ν¬ν¨νλ κ΄νΈλ
JOIN
λ°λ‘ λ€μ μμΌ ν©λλ€. ON
μ μ νμ 쿼리 λ°λ‘ λ€μ μμΌ ν©λλ€.
Join types | |
---|---|
| κ²°κ³Όμλ κ²°ν©λ νμ 쿼리μ κ²°κ³Όμ μΌμΉνλ κ°μ΄ μλ μΈλΆ 쿼리μ κ°λ§ ν¬ν¨λ©λλ€. μ΄κ²μ΄ κΈ°λ³Έ κ²°ν© μ νμ λλ€. |
| κ²°κ³Όμλ κ²°ν©λ νμ 쿼리μ μΌμΉνμ§ μλ μΈλΆ 쿼리μ μ΄λ²€νΈκ° ν¬ν¨λ©λλ€. |
Join | |
---|---|
| νμ 쿼리μ μΈλΆ 쿼리μμ λΉκ΅ν ν€ κ°μ μ μν©λλ€. νμ©λλ μ μΌν λΉκ΅ μ°μ°μλ κ°μμ λλ€.
|
| μ΄λ ν€ μλ³μκ° λ 컨ν
μ€νΈμμ λμΌν κ²½μ°λ₯Ό μν΄ μΆμ½λ ꡬ문μ
λλ€. |
κ³ λ €ν΄μΌ ν μ ν μ¬ν:
- κ²°ν©λ νμ 쿼리λ κ³μν΄μ κΈ°λ³Έ
LIMIT
μ 10κ°μ΄κ³ μ΅λLIMIT
μ 5,000κ°μ λλ€. μΈλΆ 쿼리μLIMIT
μ λ΄λΆ 쿼리μ μν₯μ μ£Όμ§ μμ΅λλ€. - κ²°ν©λ νμ 쿼리μμ
TIMESERIES
μ¬μ©μ μ§μλμ§ μμ΅λλ€. μΈλΆ 쿼리κ°TIMESERIES
λ₯Ό μ¬μ©νλ κ²½μ° κ²°ν©λ νμ 쿼리λ μ 체 쿼리 μκ° λ²μμ λν΄ λ¨μΌ κ²°κ³Όλ₯Ό μ 곡νλ€λ μ μ μ μνμμμ€. - λͺ¨λ νμ 쿼리μ λ§μ°¬κ°μ§λ‘ κ²°ν©λ νμ 쿼리λ μλ¦Ό 쑰건μμ μ¬μ©ν μ μμ΅λλ€.
SELECT *
λ μμ 쿼리μμ μ§μλμ§λ§ μ‘°μΈλ νμ 쿼리μμλ μ§μλμ§ μμ΅λλ€.- κ²°ν©μ μΉ΄λλ리ν°λ 1:100μΌλ‘ μ νλ©λλ€. μ΄λ λ¨μΌ κ²°ν© ν€κ° νμ 쿼리 κ²°κ³Όμμ 100κ° μ΄μμ νμ 맀νλ μ μμμ μλ―Έν©λλ€.
JOIN
μ μ λν μμΈν λ΄μ©μ NRQL νμ 쿼리 μ‘°μΈ νν 리μΌμ μ°Έμ‘°νμμμ€.
μ΄ μΏΌλ¦¬λ PageView
μ΄λ²€νΈ μ νμμ browserTransactionName
μΌλ‘ ν¨μ― μ²λ¦¬λ μ΄λ²€νΈ μλ₯Ό μ°Ύμ λ€μ PageAction
μ΄λ²€νΈ μ νμμ currentUrl
λ‘ ν¨μ― μ²λ¦¬λ μ΄λ²€νΈ μλ₯Ό μ°Ύμ΅λλ€. μ΄λ κ³΅ν΅ session
μμ± κ°μ κΈ°λ°μΌλ‘ λ μ΄λ²€νΈ μ νμ κ²°ν©ν©λλ€.
FROM PageViewJOIN ( FROM PageAction SELECT count(*) FACET session, currentUrl) ON sessionSELECT count(*) FACET browserTransactionName, currentUrl
![screenshot faceted inner join screenshot faceted inner join](/images/nrql_screenshot-crop_example-faceted-inner-join.webp)
ν¨μ―
INNER JOIN
μ
μ΄ μμλ ν¨μ― INNER JOIN
μμμ λμΌν λ°μ΄ν°λ₯Ό 쿼리νμ§λ§, LEFT JOIN
쿼리μ΄κΈ° λλ¬Έμ κ²°κ³Όμλ PageAction
νμ 쿼리μ κ²°κ³Όμ μΌμΉνλ session
κ°μ΄ μλ PageView
ν
μ΄λΈμ νλͺ©μ΄ ν¬ν¨λ©λλ€.
FROM PageViewLEFT JOIN ( FROM PageAction SELECT count(*) FACET session, currentUrl) ON sessionSELECT count(*) FACET browserTransactionName, currentUrl
![screenshot faceted left join screenshot faceted left join](/images/nrql_screenshot-crop_example-faceted-left-join.webp)
ν¨μ―
LEFT JOIN
μ
μ΄ λΆλΆμμλ PageAction
μ΄λ²€νΈ μ νμμ currentUrl
λ‘ λΆλ₯λ λ€μ PageView
μ΄λ²€νΈ μ νμμ browserTransactionNamed
λ‘ λΆλ₯λ μ΄λ²€νΈ μλ₯Ό μ°Ύλ μΈλΆ 쿼리λ₯Ό μ¬μ©νμ¬ μ§κ³λμ§ μμ ν λ°©μ νμ 쿼리λ₯Ό μνν©λλ€. μ΄λ κ³΅ν΅ session
μμ± κ°μ κΈ°λ°μΌλ‘ λ μ΄λ²€νΈ μ νμ κ²°ν©ν©λλ€.
session
κ° 34d5ce6acf4c60be
λ νμ 쿼리μ PageView
μ΄λ²€νΈ μ νμμ λ κ°μ browserTransactionName
κ°μ κ°μ§λ©°, κ²°κ³Όμ μΆκ° νμ μΆκ°νλ€λ μ μ μ£Όλͺ©νμμμ€.
FROM PageActionLEFT JOIN ( FROM PageView SELECT session, browserTransactionName LIMIT MAX) ON sessionSELECT count(*) FACET session, currentUrl, browserTransactionName LIMIT MAX
![screenshot columnar inner join screenshot columnar inner join](/images/nrql_screenshot-crop_example-columnar-inner-join.webp)
μ§κ³λμ§ μμ
INNER JOIN
μ
SELECT ...LIMIT count...
LIMIT
μ‘°νμ μ¬μ©νμ¬ FACET
쿼리μμ λ°νλ ν¨μ― κ°μ μ΅λ μ λλ SELECT *
쿼리μμ λ°νλ μ΅λ νλͺ© μλ₯Ό μ μ΄ν©λλ€. μ΄ μ‘°νμ λ¨μΌ μ μ κ°μ μΈμλ‘ μ¬μ©ν©λλ€. LIMIT
μ‘°νμ΄ μ§μ λμ§ μμκ±°λ κ°μ΄ μ 곡λμ§ μμ κ²½μ° μ νμ κΈ°λ³Έμ μΌλ‘ FACET
쿼리μ κ²½μ° 10, SELECT *
쿼리μ κ²½μ° 100μΌλ‘ μ€μ λ©λλ€.
LIMIT
μ μ νμ©λλ μ΅λ κ°μ 5,000μ
λλ€. 쿼리λ νΉμ κ° λμ LIMIT MAX
μ μ μ¬μ©ν΄ μλμΌλ‘ νμ¬ μ΅λκ°μ κΈ°λ³Έκ°μΌλ‘ μ€μ ν μ μμ΅λλ€. λμ€μ λ³κ²½λλλΌλ νμ μ΅λ κ°μμ κ²°κ³Όλ₯Ό νμνλ €λ κ²½μ° μ΄ κΈ°λ₯μ μ¬μ©ν μ μμ΅λλ€. 쿼리 λμμ λ³κ²½νμ§ μκ³ μ μ§νλ €λ©΄ LIMIT MAX
λ₯Ό μ¬μ©νμ§ μκ³ μνλ κ°μ μ§μ ν©λλ€.
μ΄ μΏΌλ¦¬λ μΈμ μλ³λ‘ μμ 20κ° κ΅κ°λ₯Ό νμνκ³ Windows μ¬μ©μμκ²λ§ κ° κ΅κ°μ λν μλ΅ μκ°μ 95λ²μ§Έ λ°±λΆμμλ₯Ό μ 곡ν©λλ€.
SELECT uniqueCount(session), percentile(duration, 95)FROM PageView WHERE userAgentOS = 'Windows'FACET countryCode LIMIT 20 SINCE YESTERDAY
SELECT ...LIMIT count OFFSET count...
LIMIT
κ³Ό ν¨κ» OFFSET
μ‘°νμ μ¬μ©νμ¬ SELECT *
λλ SELECT column
쿼리μμ λ°νλ ν λΆλΆμ μ μ΄ν©λλ€. LIMIT
μ‘°νκ³Ό λ§μ°¬κ°μ§λ‘ OFFSET
λ λ¨μΌ μ μ κ°μ μΈμλ‘ μ¬μ©ν©λλ€. OFFSET
μ 쿼리μμ μ νν νμ΄ λ°νλκΈ° μ μ 건λλΈ ν μλ₯Ό μ€μ ν©λλ€. μ΄κ²μ LIMIT
μ μν΄ μ νλ©λλ€.
OFFSET
νμ κ°μ₯ μ΅κ·ΌλΆν° 건λλλλ€.
μλ₯Ό λ€μ΄, SELECT interestingValue FROM Minute_Report LIMIT 5 OFFSET 1
쿼리λ κ°μ₯ μ΅κ·Ό κ°μ μ μΈνκ³ Minute_Report
μμ λ§μ§λ§ 5κ° κ°μ λ°νν©λλ€.
ORDER BY
μ‘°νμ μ¬μ©νλ©΄ νλ³λ‘ μ΄λ²€νΈ μμ±μ μ ννλ 쿼리μμ 쿼리 κ²°κ³Όλ₯Ό μ λ ¬νλ λ°©λ²μ μ§μ ν μ μμ΅λλ€.
μ΄ μΏΌλ¦¬λ λ κ°μ νΈλμμ μμ±μ κΈ°κ°λ³λ‘ μ λ ¬ν©λλ€.
FROM Transaction SELECT appName, duration ORDER BY duration
κΈ°λ³Έ μ λ ¬ μμλ μ€λ¦μ°¨μμ΄μ§λ§ ASC
λλ DESC
μμ μλ₯Ό μΆκ°νμ¬ λ³κ²½ν μ μμ΅λλ€.
μ΄ μΏΌλ¦¬λ λͺ¨λ νΈλμμ μμ±μ κΈ°κ°λ³λ‘ λ΄λ¦Όμ°¨μμΌλ‘ μ λ ¬ν©λλ€.
FROM Transaction SELECT * ORDER BY duration DESC
μ€μ
ORDER BY
μ μ FACET
쿼리μ μ μ©λμ§ μμ΅λλ€. ν¨μ― μ νμ μλ΄νλ FACET ... ORDER BY
μ κ³Ό νΌλν΄μλ μ λ©λλ€. μμΈν λ΄μ©μ FACET ... ORDER BY
λ₯Ό μ°Έμ‘°νμμμ€.
SHOW EVENT TYPES...
SHOW EVENT TYPES
νΉμ μκ° λ²μ λμ κ³μ μ μλ λͺ¨λ λ°μ΄ν° μ νμ λͺ©λ‘μ λ°νν©λλ€. SELECT
λμ 쿼리μ 첫 λ²μ§Έ μ‘°νλ‘ μ¬μ©λ©λλ€.
μ€μ
μ΄ μ»¨ν μ€νΈμμ "μ΄λ²€νΈ μ ν"μ NRQL μΏΌλ¦¬λ‘ μ‘μΈμ€ν μ μλ λ°μ΄ν° μ νμ λνλ λλ€.
μ΄ μΏΌλ¦¬λ μ§λ λ μ λͺ¨λ λ°μ΄ν° μ νμ λ°νν©λλ€.
SHOW EVENT TYPES SINCE 1 day ago
SELECT ...SINCE [numerical units AGO | phrase]...
default κ°μ 1 hour agoμ λλ€.
SINCE
μ μ μ¬μ©ν΄ λ°νλ λ°μ΄ν°μ λν μκ° λ²μμ ν¬κ΄μ (inclusive) μμμ μ μν©λλ€. 쿼리μ μκ°λλ₯Ό μ§μ ν μ μμ§λ§ κ²°κ³Όλ μ§μ ν μ μμ΅λλ€. NRQL κ²°κ³Όλ μμ€ν
μκ°μ κΈ°λ°μΌλ‘ ν©λλ€.
NRQLμ μ¬μ©ν λ UTC νμμ€ν¬ν, μλ μκ° λλ DateTime
λ¬Έμμ΄μ μ€μ ν μ μμ΅λλ€. μκ° μ§μ μ μ°Έμ‘°νμμμ€.
κΈ°ν μ°Έμ‘°:
SLIDE BY
μ‘°νμ μ¬λΌμ΄λ© μ°½μ΄λΌλ κΈ°λ₯μ μ§μν©λλ€. μ¬λΌμ΄λ© μ°½μ μ¬μ©νλ©΄ SLIDE BY
λ°μ΄ν°κ° μλ‘ κ²ΉμΉλ μκ°μ "μ°½"μΌλ‘ μμ§λ©λλ€. μ΄λ¬ν κΈ°κ°μ λ‘€λ§ μ§κ³(μ: λ‘€λ§ νκ· )κ° μ’μ μκ° μ°½μ μ§κ³λ³΄λ€ λ μ€μν κ²½μ°μ λ€μν λ³νμ΄ μλ λΌμΈ κ·Έλνλ₯Ό 맀λλ½κ² λ§λλ λ° λμμ΄ λ μ μμ΅λλ€.
SLIDE BY
λ₯Ό μ¬μ©νλ €λ©΄ 쿼리μμ TIMESERIES
μ‘°ν λ€μ λ°°μΉν©λλ€. μλ₯Ό λ€μ΄, μ΄ μΏΌλ¦¬λ 1λΆ SLIDE BY
κ°κ²©μΌλ‘ 5λΆ μ°½μ λ°μ΄ν°λ₯Ό κ°μ Έμ΅λλ€. μ¦, κ° μ°½μ 5λΆ λμ μ§μλμ§λ§, μ°½ 1μ 0λΆμ μμνκ³ , μ°½ 2λ 1λΆμ μμνκ³ , μ°½ 3μ 2λΆμμ μμνλ κ²μ
λλ€.
SELECT average(duration) FROM Transaction TIMESERIES 5 minutes SLIDE BY 1 minute
SLIDE BY
λ₯Ό μ¬μ©νλ λ°©λ²κ³Ό μκΈ°μ λν μμΈν λ΄μ©μ μ¬λΌμ΄λ© μ°½μΌλ‘ λ 보기 μ¬μ΄ μ°¨νΈ λ§λ€κΈ°λ₯Ό μ°Έμ‘°νμμμ€. λλ μ΄ μ§§μ λΉλμ€(μ½ 3λΆ 20μ΄)λ₯Ό μμ²νμμμ€.
MAX
λλ AUTO
μ ν¨κ» μ¬λΌμ΄λ© μ°½μ μ¬μ©ν μ μμ΅λλ€. κ·Έλ¬λ MAX
λλ AUTO
λ TIMESERIES
μ SLIDE BY
μ¬μ΄μ λ μ μμ΅λλ€.
μ΄ μΏΌλ¦¬λ μλμΌλ‘ SLIDE BY
μ°½ κ°κ²©μ κ²°μ ν©λλ€.
SELECT average(duration) FROM Transaction TIMESERIES 5 minutes SLIDE BY AUTO
μ΄ μΏΌλ¦¬λ SLIDE BY
μ°½μ μ΅λ κ°κ²© λ¨μλ‘ μ€μ ν©λλ€.
SELECT average(duration) FROM Transaction TIMESERIES 5 minutes SLIDE BY MAX
μ€μ
AUTO
λλ MAX
μ μν΄ κ²°μ λ SLIDE BY
κ°μ μ°½ ν¬κΈ°λ³΄λ€ ν° λ¨κ³ κ°κ²©μ μμ±ν μ μμΌλ©°, μ΄λ‘ μΈν΄ κ°κ²©κ³Ό μκΈ°μΉ μμ κ²°κ³Όκ° λ°μν μ μμ΅λλ€.
SELECT ...TIMESERIES integer units...
TIMESERIES
μ‘°νμ μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό μ§μ λ κΈ°κ°μΌλ‘ λΆλ₯λ μκ³μ΄λ‘ λ°νν©λλ€. TIMESERIES
λ νΉμ μ°¨νΈλ₯Ό νΈλ¦¬κ±°νλ λ° μ¬μ©λλ―λ‘ κΈ°λ³Έκ°μ΄ μμ΅λλ€.
μκ° λ²μλ₯Ό λνλ΄λ €λ©΄ integer units
λ₯Ό μ¬μ©ν©λλ€. μ:
TIMESERIES 1 minute
TIMESERIES 30 minutes
TIMESERIES 1 hour
TIMESERIES 30 seconds
TIMESERIES
μλ μμ κ°μ΄ 쿼리 κ²°κ³Όλ₯Ό μΆκ°λ‘ λ§μΆ€ννκΈ° μν΄ MAX
, AUTO
λ° SLIDE BY
κ°μ μΈμμ κ²°ν©ν μ μμ΅λλ€.
μ€μ
average()
λλ percentile()
κ°μ ν¨μμ κ²½μ° μ§κ³ κΈ°κ°μ΄ ν¬λ©΄ μ΄μκ°μ μλΉν ννν ν¨κ³Όκ° μμ μ μμ΅λλ€. μ΄κ²μ μΏΌλ¦¬κ° μ¬λΌμ΄λ© μλμ°λ₯Ό μ¬μ©νλμ§ μ¬λΆμ κ΄κ³μμ΄ ν΄λΉλ©λλ€.
μ 곡λ κ°μ κ·Έλνλ₯Ό ꡬλΆνλ λ° μ¬μ©λλ λ¨μλ₯Ό λνλ λλ€. μλ₯Ό λ€μ΄, 30λΆ μ¦λΆμ 보μ¬μ£Όλ 1μΌ κ·Έλνλ₯Ό νμνλ €λ©΄:
SELECT ... SINCE 1 day AGO TIMESERIES 30 minutes
TIMESERIES
κ·Έλνλ₯Ό ν©λ¦¬μ μΈ μμ λΆν λ‘ λλλ AUTO
λ‘ μ€μ ν μλ μμ΅λλ€. μλ₯Ό λ€μ΄ μΌμΌ μ°¨νΈλ 30λΆ κ°κ²©μΌλ‘ λΆν λκ³ μ£Όκ° μ°¨νΈλ 6μκ° κ°κ²©μΌλ‘ λΆν λ©λλ€.
μ΄ μΏΌλ¦¬λ 6μκ°λ§λ€ λ°μ΄ν° ν¬μΈνΈλ₯Ό μ¬μ©νμ¬ 1μ£ΌμΌ λμ ν΄λΌμ΄μΈνΈ μΈ‘ νΈλμμ μκ°μ 50λ²μ§Έ λ° 90λ²μ§Έ λ°±λΆμμλ₯Ό 보μ¬μ£Όλ μ μ°¨νΈλ‘ λ°μ΄ν°λ₯Ό λ°νν©λλ€.
SELECT average(duration), percentile(duration, 50, 90)FROM PageView SINCE 1 week AGO TIMESERIES AUTO
TIMESERIES
μ MAX
λ‘ μ€μ ν μ μμ΅λλ€. κ·Έλ¬λ©΄ μ§μ λ κΈ°κ°μ νμ©λλ μ΅λ κ°κ²© μλ‘ κΈ°κ°μ΄ μλμΌλ‘ μ‘°μ λ©λλ€. μ΄λ κ² νλ©΄ TIMESERIES
λ²ν·μ μλμΌλ‘ μ
λ°μ΄νΈνμ§ μκ³ λ κΈ°κ°μ μ
λ°μ΄νΈν μ μμΌλ©° κΈ°κ°μ΄ νμ©λλ μ΅λ κ°κ²© μλ‘ λΆν λλλ‘ ν μ μμ΅λλ€. λ°νλ μ΅λ TIMESERIES
λ²ν· μλ 366μ
λλ€.
μλ₯Ό λ€μ΄ λ€μ 쿼리λ μΌλ³ μ°¨νΈμ μνμ μΈ 4λΆ κ°κ²©μ μμ±ν©λλ€.
SELECT average(duration) FROM Transaction SINCE 1 day ago TIMESERIES MAX
SELECT ...UNTIL integer units AGO...
UNTIL
μ μ μ¬μ©νμ¬ μΏΌλ¦¬ν μκ° λ²μμ λμ μ μν©λλ€. κ°μ λ°°νμ μ
λλ€. μκ° λ²μκ° μ§μ λ μκ°μΌλ‘ μ΄λνμ§λ§ ν¬ν¨μ νμ§λ μλ λ€λ μλ―Έμ
λλ€.
default κ°μ NOWμ
λλ€. κΈ°λ³Έκ° μ΄μΈμ μλν¬μΈνΈλ₯Ό μ§μ νλ €λ©΄ UNTIL
λ§ μ¬μ©ν©λλ€.
κΈ°ν μ°Έμ‘°:
WHERE
μ‘°νμ μ¬μ©νμ¬ κ²°κ³Όλ₯Ό νν°λ§ν©λλ€. NRQLμ μ‘°νμμ μ§μ ν 쑰건μ μΆ©μ‘±νλ κ²°κ³Όλ₯Ό λ°νν©λλ€.
SELECT function(attribute) ...WHERE attribute [operator 'value' | IN ('value' [, 'value']) | IS [NOT] NULL ][AND|OR ...]...
- λ μ΄μμ 쑰건μ μ§μ νλ κ²½μ°
AND
λλOR
μ°μ°μλ‘ μ‘°κ±΄μ ꡬλΆν©λλ€.
Operators that the | Description |
---|---|
| NRQLμ νμ€ λΉκ΅ μ°μ°μλ₯Ό νμ©ν©λλ€. μμ: λΆμΈ κ°μ΄ μλ μμ±μ κ²½μ° |
| λ 쑰건μ κ΅μ°¨λ₯Ό μ μνλ λ° μ¬μ©λ©λλ€. |
| λ 쑰건μ ν©μ§ν©μ μ μνλ λ° μ¬μ©λ©λλ€. |
| μμ±μ null κ°μ΄ μλμ§ νμΈν©λλ€. |
| μμ±μ null κ°μ΄ μλμ§ νμΈν©λλ€. |
| μμ±μ λΆμΈ κ°μ΄ |
| μμ±μ λΆμΈ κ°μ΄ |
| μμ±μ λ¬Έμμ΄ κ°μ΄ μ§μ λ μ§ν©μ μλμ§ νμΈν©λλ€. μ΄ λ°©λ²μ μ¬μ©νλ©΄ μ¬λ¬ μ:
|
| μμ±μ λ¬Έμμ΄ κ°μ΄ μ§μ λ μ§ν©μ μλμ§ νμΈν©λλ€. μ΄ λ°©λ²μ μ¬μ©νλ©΄ μ¬λ¬ κ°μ μΌνλ‘ κ΅¬λΆλ κ΄νΈ μμ μμ΄μΌ ν©λλ€. μλ₯Ό λ€μ΄:
|
| μμ±μ μ§μ λ νμ λ¬Έμμ΄μ΄ ν¬ν¨λμ΄ μλμ§ νμΈν©λλ€.
λ€μ μ¬νμ μ μνμμμ€.
|
| μμ±μ μ§μ λ νμ λ¬Έμμ΄μ΄ ν¬ν¨λμ΄ μμ§ μμμ§ νμΈν©λλ€. |
| μμ±μ μ§μ λ Regex νμ λ¬Έμμ΄μ΄ ν¬ν¨λμ΄ μλμ§ νμΈν©λλ€. RE2 ꡬ문μ μ¬μ©ν©λλ€. Examples:
|
| μμ±μ μ§μ λ Regex νμ λ¬Έμμ΄μ΄ ν¬ν¨λμ΄ μμ§ μμμ§ νμΈν©λλ€. RE2 ꡬ문μ μ¬μ©ν©λλ€. |
μ΄ μΏΌλ¦¬λ μ§λ 24μκ° λμ λ―Έκ΅κ³Ό μΊλλ€μ Safari μ¬μ©μμ λν URLμ checkout
μ΄ μλ νμ΄μ§μ λΈλΌμ°μ μλ΅ μκ°μ λ°νν©λλ€.
SELECT histogram(duration, 50, 20) FROM PageViewWHERE countryCode IN ('CA', 'US') AND userAgentName='Safari' AND pageUrl LIKE '%checkout%'SINCE 1 day ago
λ©νΈλ¦ λ°μ΄ν° 쿼리μ λν μμΈν λ΄μ©μ 쿼리 λ©νΈλ¦μ μ°Έμ‘°νμμμ€.
FROM ...WITH function(attribute) AS varSELECT var...
쿼리μ μ΄λ κ³³μμλ μ°Έμ‘°ν μ μλ λ³μλ‘ κ°μ μ μ₯νλ €λ©΄ WITH ... AS
μ μ μ¬μ©νμ¬ NRQL λ³μλ₯Ό μ μν©λλ€. μ£Όμ κ·μΉ λ° ν:
WITH ... AS
μ μFROM
λλSELECT
μ μ, μ¬μ΄ λλ λ°λ‘ λ€μ μ¬ μ μμ΅λλ€.- ν λ¨μ ν¨μ(μ:
capture()
)λ§ λ³μλ‘ μ€μ ν μ μμ΅λλ€.average()
κ°μ μ§κ³ ν¨μλ μ§μλμ§ μμ΅λλ€. - νλμ
WITH
λ§ μ¬μ©ν μ μμ§λ§, μΌνλ‘ κ΅¬λΆλλ ν μ¬λ¬ NRQL λ³μλ₯Ό μ¬μ©ν μ μμ΅λλ€. - μ μλ NRQL λ³μκ° κΈ°μ‘΄ μμ±κ³Ό μ΄λ¦μ΄ λμΌν κ²½μ°, ν΄λΉ λ³μκ° μ°μ ν©λλ€.
- λ³μ μ΄λ¦μλ
%
κΈ°νΈκ° ν¬ν¨λ μ μμ΅λλ€.
μ€μ
λ©νΈλ¦μ λν μ΄λ²€νΈ κ·μΉμ NRQL 쿼리μμ WITH ... AS
μ μ μ§μνμ§ μμ΅λλ€.
λ€μμ λͺ κ°μ§ μμ 쿼리μ λλ€.
FROM TransactionWITH duration * 1000 AS millisecSELECT millisec
FROM LogWITH aparse(message, '%itemId":"*","unitPrice":*}%') AS (itemId, unitPrice)SELECT itemId, unitPrice
μ΅μ»€ ꡬ문 λΆμ (aparse()
)μ λν΄ λ³΄λ€ μμΈν μμ보μμμ€.
μ΄ μμμ NRQL λ³μ unitPrice
λ λ λ€λ₯Έ λ³μ unitPriceNum
μ μ¬μ©νμ¬ μΆμΆλ λ¬Έμμ΄μ μ«μλ‘ λ³νν©λλ€. κ·Έλ° λ€μ λ³μλ SELECT
, WHERE
λ° FACET
μ μμ μ¬μ©λ©λλ€.
FROM LogWITH aparse(message, '%itemId":"*","unitPrice":*}%') AS (itemId, unitPrice), numeric(unitPrice) AS unitPriceNumSELECT sum(unitPriceNum)FACET itemIdWHERE unitPriceNum < 100
SELECT ... WITH TIMEZONE (selected zone)...
WITH TIMEZONE
μ‘°νμ μ¬μ©νμ¬ μμ§ μ§μ λ μκ°λκ° μλ 쿼리μ λ μ§ λλ μκ°μ λν μκ°λλ₯Ό μ νν©λλ€.
λ μ§ μκ°μ μκ°λλ₯Ό μ§μ νμ§ μκ³ WITH TIMEZONE
μ μ ν¬ν¨νλ©΄ since
λ° until
μ μ μ 곡λ μκ°λλ₯Ό μ μ§ν©λλ€.
WITH TIMEZONE
μ μ ν¬ν¨νμ§ μκ³ λ μ§ μκ° λ¬Έμμ΄μ μκ°λλ₯Ό ν¬ν¨νλ©΄ λ μ§ μκ° λ¬Έμμ΄ μκ°λκ° μ μ§λ©λλ€.
μ€μ
μ§μ λμ§ μμ κ²½μ° κΈ°λ³Έ μκ°λλ νμ UTCμ
λλ€. κ²°κ³Όμ μμ νμμ€ν¬ν κ°(JSON λ·°μ νμ)μ νμ UTCμ
λλ€. UIλ κ³μ μ€μ μμ μ§μ ν μκ°λλ‘ κ²°κ³Όλ₯Ό νμν©λλ€. νμμ€ν¬ν λ¬Έμμ΄μ μκ°λλ νμ μλν©λλ€. μ΄λ WITH TIMEZONE
μκ°λλ₯Ό λ체ν©λλ€.
μλ₯Ό λ€μ΄ 쿼리 μ SINCE Monday UNTIL Tuesday WITH TIMEZONE 'America/New_York'
μ λ―Έκ΅/λ΄μ μκ°μΌλ‘ μμμΌ μμ λΆν° λ―Έκ΅/λ΄μ μκ°μΌλ‘ νμμΌ μμ κΉμ§ κΈ°λ‘λ λ°μ΄ν°λ₯Ό λ°νν©λλ€.
λ€μμ 쿼리 νμμ€ν¬ μ μ λͺ κ°μ§ μμ λλ€.
WITH TIMEZONE
μ μ μ¬μ©νλ λ μ§ μκ° λ¬Έμμ΄μ μκ°λκ° μμ΅λλ€.SINCE today UNTIL '2022-05-19T12:00' WITH TIMEZONE 'America/Los_Angeles'μ΄λ
"beginTime": "2022-05-19T07:00:00Z"
λ°"endTime": "2022-05-19T19:00:00Z"
λ‘ ν΄κ²°λ©λλ€.WITH TIMEZONE
μ μ μ¬μ©νμ§ μλ λ μ§ μκ° λ¬Έμμ΄μ μκ°λ:SINCE today UNTIL '2022-05-19T12:00-0500'μ΄λ
"beginTime": "2022-05-19T00:00:00Z"
λ°"endTime": "2022-05-19T17:00:00Z"
λ‘ ν΄κ²°λ©λλ€.μΌκ΄ μ μ½ μκ°μ λμ -0700μΈ λ―Έκ΅/λ‘μ€μ€μ €λ μ€
WITH TIMEZONE
μ μ μ¬μ©νλ λ μ§ μκ° λ¬Έμμ΄μ μκ°λ:SINCE today UNTIL '2022-05-19T12:00-0500' WITH TIMEZONE 'America/Los_Angeles'μ΄λ
"beginTime": "2022-05-19T07:00:00Z"
λ°"endTime": "2022-05-19T19:00:00Z"
λ‘ ν΄κ²°λ©λλ€.
μ¬μ© κ°λ₯ν μμ ID λͺ©λ‘μ μ°Έμ‘°νμμμ€.
μμΈν μ 보μ μλ λμ보λ λ° μ°¨νΈμμ μκ° λ²μ μ€μ μ μ°Έμ‘°νμμμ€.
λ©νΈλ¦ λ°μ΄ν° 쿼리
λ©νΈλ¦ λ°μ΄ν°λ λ€λ₯Έ μ νμ λ°μ΄ν°λ³΄λ€ 볡μ‘ν©λλ€. μ΄λ₯Ό ν¨κ³Όμ μΌλ‘ 쿼리νκΈ° μν λͺ κ°μ§ νμ΄ μμ΅λλ€. λ κ°μ§ μ νμ λ©νΈλ¦ λ°μ΄ν°κ° μμΌλ©° κ°κ° κ³ μ ν 쿼리 μ§μΉ¨μ΄ μ‘΄μ¬ν©λλ€.
- Metric API λ° ν΄λΉ APIλ₯Ό μ¬μ©νλ μΌλΆ μ루μ (μ:Dropwizard ν΅ν© λλ Micrometer ν΅ν© )μμ λ³΄κ³ νλ μ°¨μ λ©νΈλ¦μ 쿼리ν©λλ€.
- 쿼리 λ©νΈλ¦ νμμ¬λΌμ΄μ€ λ°μ΄ν°λ λ΄λ λ¦ APM, λͺ¨λ°μΌ λͺ¨λν°λ§ λ° μμ λ³΄κ³ λλ κΈ°λ³Έ λ©νΈλ¦ λ°μ΄ν° μ νμ λλ€.
λ©νΈλ¦ λ°μ΄ν°λ₯Ό λ³΄κ³ νλ λ°©λ²μ λν μμΈν λ΄μ©μ λ©νΈλ¦ λ°μ΄ν° μ νμ μ°Έμ‘°νμμμ€.
κΈ°λ₯
μ΄ μΉμ μμλ NRQL ν¨μ, μ¦ μ§κ³ κΈ°λ₯κ³Ό λΉ μ§κ³ κΈ°λ₯μ λν΄ μ€λͺ ν©λλ€.
μ§ν©κΈ° κΈ°λ₯
μ§κ³ ν¨μλ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό νν°λ§νκ³ μ§κ³ν μ μμ΅λλ€. μ¬μ©μ μν λͺ κ°μ§ νμ λ€μκ³Ό κ°μ΅λλ€.
- νν° μΏΌλ¦¬, Apdex 쿼리 λ° λ°±λΆμμ 쿼리μ λν New Relic University μμ΅μλ₯Ό μ°Έμ‘°νμμμ€. λλ NRQL 쿼리 μμ±μ λν μ 체 μ¨λΌμΈ κ³Όμ μ λ°©λ¬Ένμμμ€.
- λμΌν 쿼리(μ:
SELECT median(one_metric), median(another_metric)
)μμ μ§κ³ ν¨μλ₯Ό μ¬λ¬ λ² μ¬μ©νλ κ²½μ° κ²°κ³Ό νμμ λ¬Έμ κ° λ°μν μ μμ΅λλ€. μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ €λ©΄AS
ν¨μλ₯Ό μ¬μ©ν©λλ€. μ:SELECT median(one_metric) AS 'med-a', median(another_metric) AS 'med-b' - λ°μ΄ν° μ ν "κ°μ "λ μ§μλμ§ μμ΅λλ€. μ¬μ© κ°λ₯ν μ ν λ³ν ν¨μμ λν΄ μμ보μμμ€.
- μκ° κ²½κ³Όμ λ°λ₯Έ κ²°κ³Όλ₯Ό νμνλ λ°©λ²μ μκ° κ²½κ³Όμ λ°λ₯Έ κ²°κ³Ό κ·Έλ£Ήνλ₯Ό μ°Έμ‘°νμμμ€.
μ:
SELECT histogram(duration, 10, 20) FROM PageView SINCE 1 week ago
aggregationendtime()
ν¨μλ₯Ό μ¬μ©νμ¬ κ΄λ ¨ μ§κ³ μκ°μ λ°νν©λλ€. λ ꡬ체μ μΌλ‘ λ§νλ©΄, μ£Όμ΄μ§ μ§κ³μ λν΄ aggregationendtime()
ν¨μλ ν΄λΉ μ§κ³ κΈ°κ°μ λ νμμ€ν¬νλ₯Ό μ 곡ν©λλ€. μλ₯Ό λ€μ΄, μκ³μ΄ 쿼리μμ 1μκ° λΆλμ λ°μ΄ν°λ₯Ό ν¬ν¨νλ λ°μ΄ν° ν¬μΈνΈμ κ²½μ° ν¨μλ ν΄λΉ μκ° κΈ°κ°μ λ νμμ€ν¬νλ₯Ό λ°νν©λλ€.
apdex
ν¨μλ₯Ό μ¬μ©ν΄ λ¨μΌ νΈλμμ
λλ λͺ¨λ νΈλμμ
μ λν Apdex μ μλ₯Ό λ°νν©λλ€. κΈ°λ³Έ Apdex μ μλ 0.5μ΄μ
λλ€. μμ±μ duration
λλ backendDuration
κ°μ΄ μλ΅ μκ°μ κΈ°λ°μΌλ‘ νλ λͺ¨λ μμ±μ΄ λ μ μμ΅λλ€. t:
μΈμλ μ νν μμ±κ³Ό λμΌν μκ° λ¨μλ‘ Apdex T
μκ³κ°μ μ μν©λλ€. μλ₯Ό λ€μ΄, μμ±μ΄ μ΄ λ¨μλ‘ μΈ‘μ λλ κ²½μ° t:
λ μ΄ λ¨μ μκ³κ°μ΄ λ©λλ€.
apdex()
ν¨μμμ λ°νλ Apdex μ μλ μ€ν μκ°μλ§ κΈ°λ°νλ©°, APM μ€λ₯λ κ³ λ €νμ§ μμ΅λλ€. νΈλμμ
μ μ€λ₯κ° ν¬ν¨λμ΄ μμ§λ§ Apdex T μ΄νμμ μλ£λλ κ²½μ° ν΄λΉ νΈλμμ
μ apdex ()
ν¨μμ μν΄ μΆ©μ‘±λ κ²μΌλ‘ νκ°λ©λλ€.
μ¬μ©μ μ μ μμ±μ μ μν κ²½μ° ν΄λΉ μμ±μ κΈ°λ°μΌλ‘ νν°λ§ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, νΉν μ€μν κ³ κ°μ Apdexλ₯Ό λͺ¨λν°λ§ν μ μμ΅λλ€.
SELECT apdex(duration, t: 0.4) FROM TransactionWHERE customerName='ReallyImportantCustomer' SINCE 1 day ago
νΉμ νΈλμμ
μ λν μ μλ₯Ό λ°ννλ €λ©΄ name
μμ±μ μ¬μ©νκ±°λ, name
μ μλ΅νμ¬ μ 체 Apdexλ₯Ό λ°νν©λλ€. μ΄ μΏΌλ¦¬λ μ§λ ν μκ° λμμ Controller/notes/index νΈλμμ
μ λν Apdex μ μλ₯Ό λ°νν©λλ€.
![crop-apdex-function crop-apdex-function](/images/queries-nrql_screenshot-full_apdex-NRQL-query-builder.webp)
apdex
ν¨μλ μ¬μ΄νΈμ λν μ¬μ©μ λ§μ‘±λλ₯Ό μΈ‘μ νλ Apdex μ μλ₯Ό λ°νν©λλ€. μΈμλ μλ΅ μκ° μμ± λ° Apdex T μκ³κ°(μ΄)μ
λλ€.
SELECT apdex(duration, t: 0.5) from TransactionWHERE name='Controller/notes/index' SINCE 1 hour ago
μ΄ μμ 쿼리λ μ§λ 3μ£Ό λμ μ ν리μΌμ΄μ μ λν μ 체 Apdexλ₯Ό λ°νν©λλ€.
SELECT apdex(duration, t: 0.08) FROM Transaction SINCE 3 week ago
average()
ν¨μλ₯Ό μ¬μ©νμ¬ μμ±μ νκ· κ°μ λ°νν©λλ€. λ¨μΌ μμ± μ΄λ¦μ μΈμλ‘ μ¬μ©ν©λλ€. μμ± κ°μ΄ μ«μκ° μλλ©΄ μ§κ³ν λ 무μλ©λλ€. 쿼리 쑰건과 μΌμΉνλ λ°μ΄ν°λ₯Ό μ°Ύμ μ μκ±°λ 쿼리μμ λ°νλ μ«μ κ°μ΄ μμΌλ©΄ null κ°μ λ°νν©λλ€.
bucketPercentile()
ν¨μλ Prometheusμ histogram_quantile
ν¨μμ ν΄λΉνλ NRQLμ
λλ€. μ°¨μ λ©νΈλ¦ λ°μ΄ν°μ ν¨κ» μ¬μ©νκΈ° μν κ²μ
λλ€. quantile λμ λ΄λ λ¦μ quantile * 100μΈ λ°±λΆμμλ₯Ό λ°νν©λλ€.
bucketPercentile()
ν¨μλ₯Ό μ¬μ©νμ¬ Prometheus νμμ νμ€ν κ·Έλ¨ λ°μ΄ν°μμ λΆμμλ₯Ό κ³μ°ν©λλ€.
λ²ν· μ΄λ¦μ μΈμλ‘ μ¬μ©νκ³ λ²ν· κ²½κ³λ₯Ό λ°λΌ λ°±λΆμμλ₯Ό λ³΄κ³ ν©λλ€.
SELECT bucketPercentile(duration_bucket) FROM Metric SINCE 1 day ago
μ νμ μΌλ‘ λ°±λΆμμ μ¬μμ μΈμλ‘ μΆκ°ν μ μμ΅λλ€.
SELECT bucketPercentile(duration_bucket, 50, 75, 90) FROM Metric SINCE 1 day ago
Prometheus νμ€ν κ·Έλ¨ λ°μ΄ν°λ₯Ό ꡬμ±νλ λ° μ¬λ¬ μΈ‘μ νλͺ©μ΄ μ¬μ©λκΈ° λλ¬Έμ μ°κ²°λ <basename>
μΈ‘λ©΄μμ νΉμ Prometheus λ©νΈλ¦μ 쿼리ν΄μΌ ν©λλ€.
μλ₯Ό λ€μ΄, NRQLμ μ¬μ©νλ <basename>
prometheus_http_request_duration_seconds
λ₯Ό μ¬μ©νμ¬ Prometheus Histogramμμ μ»΄ν¨νΈ λ°±λΆμμλ₯Ό μ¬μ©νλ €λ©΄ bucketPercentile(prometheus_http_request_duration_seconds_bucket, 50)
μ μ¬μ©ν©λλ€. _bucket
μ΄ <basename>
λμ μ λ―Έμ¬λ‘ μΆκ°λλ λ°©μμ μ μνμμμ€.
μμΈν λ΄μ©μ Prometheus.io λ¬Έμλ₯Ό μ°Έμ‘°νμΈμ.
cardinality()
ν¨μλ₯Ό μ¬μ©νμ¬ λ©νΈλ¦μ λͺ¨λ μΈ‘μ κΈ°μ€(μμ±) μ‘°ν© μλ₯Ό κ°μ Έμ΅λλ€.
μΈ κ°μ μΈμκ° νμνλ©° λͺ¨λ μ ν μ¬νμ λλ€.
- μΈ‘μ νλͺ© μ΄λ¦: μλ κ²½μ°
cardinality()
μ μ§μ λ λ©νΈλ¦λ§ κ³μ°ν©λλ€. - Include(ν¬ν¨): μ‘΄μ¬νλ κ²½μ°, ν¬ν¨ λͺ©λ‘μ μΉ΄λλλ¦¬ν° κ³μ°μ ν΄λΉ μμ±μΌλ‘ μ νν©λλ€.
- Exclude(μ μΈ): μ‘΄μ¬νλ κ²½μ° μ μΈ λͺ©λ‘μΌλ‘ μΈν΄ μΉ΄λλλ¦¬ν° κ³μ°μμ ν΄λΉ μμ±μ΄ 무μλ©λλ€.
cdfPercentage()
λ λμ λΆν¬ ν¨μμ ꡬνμΌλ‘, thresholds
μ΄νμΈ attribute
κ°μ λ°±λΆμ¨μ λ°νν©λλ€.
cdfPercentage()
λ attribute
μΈμλ₯Ό μ§κ³νλ©°, μ«μ μμ± λλ λΆν¬ λ©νΈλ¦ μμ±μ΄ λ μ μμ΅λλ€. νλμ 쿼리μ νΌν© μ νμ΄ νμ©λ©λλ€. λ€λ₯Έ μ ν(μ: λ¬Έμμ΄)μ 무μλ©λλ€. μ΅λ 10κ°μ μκ³κ°μ μ§μ ν μ μμ΅λλ€.
μ΄ μΏΌλ¦¬λ firstPaint
κ° 0.5μ΄ μ΄νμΈ μ΄λ²€νΈμ λΉμ¨κ³Ό firstPaint
κ° 1μ΄ μ΄νμΈ μ΄λ²€νΈμ λΉμ¨μ λ°νν©λλ€.
FROM PageView SELECT cdfPercentage(firstPaint, 0.5, 1.0)
count()
ν¨μλ₯Ό μ¬μ©νμ¬ μ¬μ© κ°λ₯ν λ μ½λ μλ₯Ό λ°νν©λλ€. λ¨μΌ μΈμκ° νμν©λλ€. *
, μμ± λλ μμ κ°μ
λλ€. νμ¬λ μΌλ°μ μΈ SQL λμμ λ°λ₯΄κ³ ν΄λΉ μΈμμ λν κ°μ΄ μλ λͺ¨λ λ μ½λλ₯Ό κ³μ°ν©λλ€.
count(*)
λ νΉμ μμ±μ μ΄λ¦μ μ§μ νμ§ μμΌλ―λ‘ κ²°κ³Όλ κΈ°λ³Έ "humanize" νμμΌλ‘ μ§μ λ©λλ€.
derivative()
μ£Όμ΄μ§ λ°μ΄ν° μΈνΈμ λ³νμ¨μ μ°Ύμ΅λλ€. λ³νμ¨μ λν¨μλ₯Ό κ·Όμ¬ννκΈ° μν΄ μ ν μ΅μμ κ³± νκ·λ₯Ό μ¬μ©νμ¬ κ³μ°λ©λλ€. μ΄ κ³μ°μλ λ μ΄μμ λ°μ΄ν° ν¬μΈνΈλ₯Ό λΉκ΅ν΄μΌ νλ―λ‘ νκ° λ²μμ νλμ λ°μ΄ν° ν¬μΈνΈλ§ ν¬ν¨λλ κ²½μ° κ³μ°μ΄ λΆνμ€νκ³ μλνμ§ μμ null
κ°μ΄ μμ±λ©λλ€.
time interval
μ λ³νμ¨μ΄ κ³μ°λλ κΈ°κ°μ
λλ€. μλ₯Ό λ€μ΄, derivative(attributeName, 1 minute)
λ λΆλΉ λ³κ²½ λΉμ¨μ λ°νν©λλ€.
earliest()
ν¨μλ₯Ό μ¬μ©νμ¬ μ§μ λ μκ° λ²μ λμ μμ±μ λν κ°μ₯ μ΄λ₯Έ κ°μ λ°νν©λλ€.
λ¨μΌ μΈμκ° νμν©λλ€.
FACET
κ³Ό ν¨κ» μ¬μ©νλ κ²½μ° κ° κ²°κ³Ό ν¨μ―μ λν μμ±μ κ°μ₯ μ΅κ·Ό κ°μ λ°νν©λλ€.
μ΄ μΏΌλ¦¬λ PageView
μ΄λ²€νΈμμ κ° μ¬μ©μ μμ΄μ νΈλΉ κ°μ₯ λΉ λ₯Έ κ΅κ° μ½λλ₯Ό λ°νν©λλ€.
SELECT earliest(countryCode) FROM PageView FACET userAgentName
filter()
ν¨μλ₯Ό μ¬μ©νμ¬ SELECT
λ¬Έμ μ§κ³ ν¨μ μ€ νλμ λν κ²°κ³Όλ₯Ό μ νν©λλ€. FACET
λλ TIMESERIES
μ ν¨κ» filter()
λ₯Ό μ¬μ©ν μ μμ΅λλ€. νν°λ λ€μκ³Ό κ°μ μ¬λ¬ μ§κ³λ₯Ό μ νν λλ§ μ μ©ν©λλ€.
SELECT filter(sum(x), WHERE attribute='a') AS 'A', filter(sum(x), WHERE attribute='b') AS 'B' ...
κ·Έλ μ§ μμΌλ©΄, νμ€ WHERE
μ μ μ¬μ©νλ κ²μ΄ μ’μ΅λλ€.
funnel()
ν¨μλ₯Ό μ¬μ©νμ¬ νΌλ μ°¨νΈλ₯Ό μμ±ν©λλ€. μμ±μ 첫 λ²μ§Έ μΈμλ‘ μ¬μ©ν©λλ€. κ·Έλ° λ€μ λ¨κ³λ₯Ό μΌνλ‘ κ΅¬λΆλ WHERE
μ‘°ν(λ μ΄λΈμ λν μ νμ AS
μ‘°ν ν¬ν¨)λ‘ μ§μ ν©λλ€.
μμΈν λ΄μ©κ³Ό μλ νΌλ λ¬Έμλ₯Ό μ°Έμ‘°νμμμ€.
histogram()
ν¨μλ₯Ό μ¬μ©νμ¬ λ°μ΄ν° μΈνΈμ λΆν¬λ₯Ό μκ°ννλ λ° μ μ©ν νμ€ν κ·Έλ¨μ μμ±ν©λλ€. λ°μ΄ν° μΈνΈλ₯Ό μ ν΄μ§ λ²ν· μλ‘ λλκ³ κ° λ²ν·μ μνλ λ°μ΄ν° ν¬μΈνΈμ μλ₯Ό κ³μ°ν©λλ€.
μΈμ:
attribute
첫 λ²μ§Έ μΈμλ νμμ΄λ©° κ° νμ€ν κ·Έλ¨ λ²ν· λ²μμ μνλ κ°μ κ³μ°ν μμ±μ μ§μ ν©λλ€.width:
μν λ²μμ λλΉλ₯Ό λνλ λλ€. λ²μμ μ΅λκ°μstart
μΈμ κ°μ μ΄width
κ°μ λν κ°μ λλ€.- μμΉ(λΌλ²¨μ΄ μ§μ λμ§ μμ) μΈμλ₯Ό μ¬μ©νλ κ²½μ°
width
λ λ λ²μ§Έ μΈμμ λλ€. - κΈ°λ³Έ:
10
- μμΉ(λΌλ²¨μ΄ μ§μ λμ§ μμ) μΈμλ₯Ό μ¬μ©νλ κ²½μ°
buckets:
λ²ν·μ μ΄ κ°μ(1
μ΄μ500
μ΄ν)- μμΉ(λΌλ²¨μ΄ μ§μ λμ§ μμ) μΈμλ₯Ό μ¬μ©νλ κ²½μ°
buckets
λ μΈ λ²μ§Έ μΈμμ λλ€. - κΈ°λ³Έ:
40
- μμΉ(λΌλ²¨μ΄ μ§μ λμ§ μμ) μΈμλ₯Ό μ¬μ©νλ κ²½μ°
start:
νμ€ν κ·Έλ¨ λ²μμ μμμ μλ―Έν©λλ€.- μμΉ(λΌλ²¨μ΄ μ§μ λμ§ μμ) μΈμλ₯Ό μ¬μ©νλ κ²½μ°
start
λ λ€ λ²μ§Έ μΈμμ λλ€. - κΈ°λ³Έ:
0
μ°Έκ³
μ μλ νμ€ν κ·Έλ¨ λ²μλ₯Ό λ²μ΄λλ κ°μ 첫 λ²μ§Έ λλ λ§μ§λ§ λ²ν·μ ν¬ν¨λ©λλ€. 첫 λ²μ§Έ λ²ν· μμλ νμ€ν κ·Έλ¨ λ²μλ³΄λ€ μμ νλͺ©μ΄ ν¬ν¨λκ³ , λ§μ§λ§ λ²ν· μμλ νμ€ν κ·Έλ¨ λ²μλ³΄λ€ ν° νλͺ©μ΄ ν¬ν¨λ©λλ€. νμ€ν κ·Έλ¨ κ²°κ³Όμμ μ΄λ¬ν κ°μ μ μΈνλ €λ©΄ 쿼리μ where μ μ νν°λ₯Ό ν¬ν¨μν΅λλ€. (μ:
WHERE attribute >= [start] AND attribute <= [start + width]
)μ΄ μΏΌλ¦¬λ 40κ° λ²ν·μ λν΄ μ΅λ 10μ΄ λ²μμ μλ΅ μκ° νμ€ν κ·Έλ¨μ μμ±ν©λλ€. μ΄λ κ° λ²ν·μ΄ 0.25μ΄μ κ° λ²μλ₯Ό ν¬ν¨νλ€λ κ²μ μλ―Έν©λλ€. (10 / 40 = 0.25). 10μ΄λ³΄λ€ ν° κΈ°κ° κ°μ λ§μ§λ§ λ²ν·μ ν¬ν¨λ©λλ€. κΈ°κ°μ΄ 0λ³΄λ€ μμ μ μλ κ²½μ° ν΄λΉ κ°μ 첫 λ²μ§Έ λ²ν·μ ν¬ν¨λ©λλ€.
SELECT histogram(duration) FROM PageView SINCE 1 week agoμ΄μ λλ±ν 쿼리λ 10κ° λ²ν·μ λν΄ μ΅λ 5μ΄ λ²μμ μλ΅ μκ° νμ€ν κ·Έλ¨μ μμ±ν©λλ€.
SELECT histogram(duration, 5, 10) FROM PageView SINCE 1 week agoSELECT histogram(duration, width: 5, buckets: 10) FROM PageView SINCE 1 week agoμ΄μ λλ±ν 쿼리λ 3κ° λ²ν·μ λν΄ 1-4μ΄ λ²μμ μλ΅ μκ° νμ€ν κ·Έλ¨μ μμ±ν©λλ€.
μΈλΆ λ²ν· μ 보
λ²ν· 1
λ²ν· 2
λ²ν· 3
λ²ν· λ²μ
1- 2
2-3
3-4
κ³μ°λ κ°
< 2
β₯ 2 λ° < 3
β₯ 3
SELECT histogram(duration, 3, 3, 1)FROM PageView SINCE 1 week agoSELECT histogram(duration, width: 3, buckets: 3, start: 1)FROM PageView SINCE 1 week agohistogram()
Prometheus νμ€ν κ·Έλ¨ λ²ν· νμ©:SELECT histogram(duration_bucket, 10, 20)FROM Metric SINCE 1 week agohistogram()
λΆν¬ μΈ‘μ νλͺ©μ μ λ ₯μΌλ‘ μλ½ν©λλ€.SELECT histogram(myDistributionMetric, 10, 20)FROM Metric SINCE 1 week agoFACET
μ κ³Ό ν¨κ»histogram()
λ₯Ό μ¬μ©νμ¬ ννΈλ§΅ μ°¨νΈλ₯Ό μμ±ν©λλ€.SELECT histogram(duration)FROM PageView FACET appName SINCE 1 week ago- μμΉ(λΌλ²¨μ΄ μ§μ λμ§ μμ) μΈμλ₯Ό μ¬μ©νλ κ²½μ°
keyset()
λ₯Ό μ¬μ©νλ©΄ μ£Όμ΄μ§ μκ° λ²μ λμ μ£Όμ΄μ§ λ°μ΄ν° μ νμ λν λͺ¨λ μμ±μ λ³Ό μ μμ΅λλ€. μΈμκ° νμνμ§ μμ΅λλ€. λ¬Έμμ΄ μ ν ν€, μ«μ μ ν ν€, Boolean μ ν ν€ λ° λͺ¨λ ν€μ κ·Έλ£Ήμ ν¬ν¨νλ JSON ꡬ쑰λ₯Ό λ°νν©λλ€.
μ΄ μΏΌλ¦¬λ λ§μ§λ§ λ μ PageView
μ΄λ²€νΈμ λν΄ μ°Ύμ μμ±μ λ°νν©λλ€.
SELECT keyset() FROM PageView SINCE 1 day ago
latest()
ν¨μλ₯Ό μ¬μ©νμ¬ μ§μ λ μκ° λ²μ λμ μμ±μ κ°μ₯ μ΅κ·Ό κ°μ λ°νν©λλ€.
λ¨μΌ μΈμκ° νμν©λλ€.
FACET
κ³Ό ν¨κ» μ¬μ©νλ κ²½μ° κ° κ²°κ³Ό ν¨μ―μ λν μμ±μ κ°μ₯ μ΅κ·Ό κ°μ λ°νν©λλ€.
μ΄ μΏΌλ¦¬λ PageView
μ΄λ²€νΈμμ κ° μ¬μ©μ μμ΄μ νΈλΉ κ°μ₯ μ΅κ·Όμ κ΅κ° μ½λλ₯Ό λ°νν©λλ€.
SELECT latest(countryCode) FROM PageView FACET userAgentName
latestrate()
ν¨μλ₯Ό μ¬μ©νμ¬ λ§μ§λ§ 2κ°μ λ°μ΄ν° ν¬μΈνΈλ₯Ό κΈ°λ°μΌλ‘ ν κ°μ λ³νμ¨μ λ°νν©λλ€. λ¬Έμ μ μμ±μ 첫 λ²μ§Έ μΈμλ‘ μ¬μ©νκ³ κ²°κ³Ό λΉμ¨μ λν μκ° λ¨μλ₯Ό λ λ²μ§Έ μΈμλ‘ μ¬μ©ν©λλ€. μ΄ ν¨μλ change in attribute/time interval
λ¨μλ‘ κ²°κ³Όλ₯Ό λ°νν©λλ€.
μ΄ κΈ°λ₯μ μ΅μ²¨λ¨ μΆμΈλ₯Ό 보기 μν΄ μμ±μ λν κ°μ₯ μ΅κ·Όμ λ³κ²½ λΉμ¨μ μ 곡νλ λ° μ μ©ν μ μμ΅λλ€.
μ΄ μΏΌλ¦¬λ λ§μ§λ§ 2κ°μ λ°μ΄ν° ν¬μΈνΈλ₯Ό κΈ°λ°μΌλ‘ νλ κΈ°κ°μ λ³νμ¨μ λ°νν©λλ€. 1 SECOND
μΈμλλ¬Έμ duration/second
λ¨μλ‘ λ°νλ©λλ€.
SELECT latestrate(duration, 1 SECOND) FROM PageView
max()
ν¨μλ₯Ό μ¬μ©νμ¬ μ§μ λ μκ° λ²μ λμ μ«μ μμ±μ μ΅λ κΈ°λ‘ κ°μ λ°νν©λλ€. λ¨μΌ μμ± μ΄λ¦μ μΈμλ‘ μ¬μ©ν©λλ€. μμ± κ°μ΄ μ«μκ° μλλ©΄ μ§κ³ν λ 무μλ©λλ€. 쿼리 쑰건과 μΌμΉνλ λ°μ΄ν°λ₯Ό μ°Ύμ μ μκ±°λ 쿼리μμ λ°νλ μ«μ κ°μ΄ μμΌλ©΄ null κ°μ λ°νν©λλ€.
μμ±μ μ€μκ° λλ 50λ²μ§Έ λ°±λΆμμλ₯Ό λ°ννλ €λ©΄ median()
ν¨μλ₯Ό μ¬μ©ν©λλ€. λ°±λΆμμ 쿼리μ λν μμΈν λ΄μ©μ percentile()
μ μ°Έμ‘°νμμμ€.
μ΄ μΏΌλ¦¬λ μ€μκ°μ λν λΌμΈ μ°¨νΈλ₯Ό μμ±ν©λλ€.
SELECT median(duration) FROM PageView TIMESERIES AUTO
JOIN
μ μ μ€μκ°:
μ€μκ°μ
percentile(attribute, 50)
μ μ§λ¦κΈΈμΌ λΏμ΄λ―λ‘, κ²°ν©λ νμ 쿼리μmedian()
κ²°κ³Όλ 50λ²μ§Έ λ°±λΆμμλ₯Ό κ³μ°λ κ°μ 맀ννλ λ³΅ν© λ°μ΄ν° μ νμ λλ€.μΈλΆ 쿼리μμ μ€μ μ€μκ°μ μ°Έμ‘°νλ €λ©΄
getField()
ν¨μλ₯Ό μ¬μ©ν μ μμ΅λλ€. 맀νλ ν€λ μ΄μ€ κ°μ λ¬Έμμ΄ ννμ΄λ―λ‘median()
μ κ²½μ°'50.0'
μ λλ€.
min()
ν¨μλ₯Ό μ¬μ©νμ¬ μ§μ λ μκ° λ²μ λμ μ«μ μμ±μ μ΅μ κΈ°λ‘ κ°μ λ°νν©λλ€. λ¨μΌ μμ± μ΄λ¦μ μΈμλ‘ μ¬μ©ν©λλ€. μμ± κ°μ΄ μ«μκ° μλλ©΄ μ§κ³ν λ 무μλ©λλ€. 쿼리 쑰건과 μΌμΉνλ λ°μ΄ν°λ₯Ό μ°Ύμ μ μκ±°λ 쿼리μμ λ°νλ μ«μ κ°μ΄ μμΌλ©΄ null κ°μ λ°νν©λλ€.
percentage()
ν¨μλ₯Ό μ¬μ©νμ¬ μΌλΆ 쑰건과 μΌμΉνλ λμ λ°μ΄ν° μΈνΈμ λ°±λΆμ¨μ λ°νν©λλ€.
μ΄ ν¨μλ λ κ°μ μΈμλ₯Ό κΈ°λν©λλ€(μ²μ λ κ° μ΄νμ μΈμλ 무μλ©λλ€). 첫 λ²μ§Έ μΈμμλ μνλ μμ±μ λν μ§κ³μ ν¨μκ° νμν©λλ€. μμ±μ΄ μ«μκ° μλλ©΄ μ΄ ν¨μλ 100% κ°μ λ°νν©λλ€. λ λ²μ§Έ μΈμμλ WHERE
μ μ΄ νμν©λλ€.
FROM Transaction SELECT percentage(count(*), WHERE error is true ) AS 'Error Percent' WHERE host LIKE '%west%' EXTRAPOLATE
percentile()
ν¨μλ₯Ό μ¬μ©νμ¬ μ§μ λ λ°±λΆμμμμ μμ±μ λλ΅μ μΈ κ°μ λ°νν©λλ€. μμ±μ΄ νμνλ©° λ°±λΆμμλ₯Ό λνλ΄λ μΈμλ₯Ό μνλ λ§νΌ μ¬μ©ν μ μμ΅λλ€. percentile()
ν¨μλ₯Ό μ¬μ©νλ©΄ λ°±λΆμμλ₯Ό μμμ μ΄ν 3μ리κΉμ§ νμν μ μμ΄ μ λ°λκ° ν₯μλ©λλ€. λ°±λΆμμ μκ³κ°μ μμ§μ κ°μΌλ‘ μ§μ ν μ μμ§λ§ λλΆλΆμ λ°μ΄ν° μΈνΈμμ μλ‘ 0.1λ³΄λ€ κ°κΉμ΄ λ°±λΆμμλ νμΈλμ§ μμ΅λλ€.
![percentile.png percentile.png](/images/queries-nrql_screenshot-full_percentile-NRQL-query-builder.webp)
λ°±λΆμμ νμ μ
TIMESERIES
λ₯Ό μ¬μ©νμ¬ μκ° κ²½κ³Όμ λ°λΌ 맀νλ λ°±λΆμμκ° μλ λΌμΈ μ°¨νΈλ₯Ό μμ±ν©λλ€.
λ°±λΆμμμ λν μ§κ³ κ°μ νμνλ λΉλ³΄λ λ° μμ± μνΈλ₯Ό μμ±νλ €λ©΄
TIMESERIES
λ₯Ό μλ΅ν©λλ€.λμ΄λ λ°±λΆμμκ° μλ κ²½μ° κΈ°λ³Έκ°μ 95λ²μ§Έ λ°±λΆμμμ λλ€. 50λ²μ§Έ λ°±λΆμμ κ°μΈ μ€μκ°λ§ λ°ννλ €λ©΄
median()
μ μ¬μ©ν μλ μμ΅λλ€.μ΄ μΏΌλ¦¬λ 5λ²μ§Έ, 50λ²μ§Έ, 95λ²μ§Έ λ°±λΆμμμ λν μ μ΄ μλ λΌμΈ μ°¨νΈλ₯Ό μμ±ν©λλ€.
SELECT percentile(duration, 5, 50, 95) FROM PageView TIMESERIES AUTOJOIN
μ μ λ°±λΆμμ:κ²°ν©λ νμ 쿼리μμ λ°±λΆμμλ₯Ό μ¬μ©νλ κ²½μ° νμ 쿼리μ κ²°κ³Όλ κ° λ°±λΆμμλ₯Ό κ³μ°λ κ°μ 맀ννλ λ³΅ν© λ°μ΄ν° μ νμ λλ€.
μΈλΆ 쿼리μ κ°λ³ λ°±λΆμμ κ°μ μ°Έμ‘°νλ €λ©΄
getField()
ν¨μλ₯Ό μ¬μ©ν μ μμ΅λλ€. 맀νλ ν€λ μ΄μ€ κ°μ λ¬Έμμ΄ ννμ΄λ―λ‘ μ μμ.0
μ μΆκ°ν΄μΌ ν©λλ€. μλ₯Ό λ€μ΄, 95λ²μ§Έ λ°±λΆμμμ λν ν€λ'95.0'
μ λλ€.
predictLinear()
derivative()
ν¨μμ νμ₯μ
λλ€. λ°μ΄ν° μΈνΈμ λ―Έλ κ°μ μμΈ‘νκΈ° μν΄ μ μ¬ν μ΅μ μ κ³± μ ν νκ· λ°©λ²μ μ¬μ©ν©λλ€.
time interval
μ μΏΌλ¦¬κ° μμΌλ‘ μΌλ§λ λ©λ¦¬ λ³Ό κ²μΈμ§μ λλ€. μλ₯Ό λ€μ΄,predictLinear(attributeName, 1 hour)
λ 쿼리 μκ° μ°½μμ 1μκ° νμ μ ν μμΈ‘μ λλ€.- μΌλ°μ μΌλ‘
predictLinear()
λ λμ€ν¬ 곡κ°κ³Ό κ°μ΄ μ§μμ μΌλ‘ μ¦κ°νλ κ°μ΄λ ν° μΆμΈμ λν μμΈ‘μ μ μ©ν©λλ€. predictLinear()
μ ν νκ·μ΄λ―λ‘ μΏΌλ¦¬λλ λ°μ΄ν°μΈνΈμ μ΅μνλ©΄ μ νν μ₯κΈ° μμΈ‘μ 보μ₯νλ λ° λμμ΄ λ©λλ€.- κΈ°νκΈμμ μΌλ‘, λμμ μΌλ‘ λλ κΈ°ν λΉμ ν μλ¨μ μν΄ μ¦κ°νλ λ°μ΄ν° μΈνΈλ λ¨κΈ° μμΈ‘μμλ§ μ±κ³΅ν κ°λ₯μ±μ΄ λμ΅λλ€.
- λ΄λ λ¦μ
TIMESERIES
쿼리μμpredictLinear
μ¬μ©μ κΆμ₯νμ§ μμ΅λλ€. μ΄λ κ° λ²ν·μ΄ 쿼리 λ΄ μλμ μΈ μκ° νλ μμ κΈ°λ°μΌλ‘ κ°λ³ μμΈ‘μ μννκΈ° λλ¬Έμ λλ€. μ¦, μ΄λ¬ν 쿼리λ μκ³μ΄μ λλΆν° μμΈ‘μ νμνμ§ μμ΅λλ€.
rate()
ν¨μλ₯Ό μ¬μ©νμ¬ μκ° κ°κ²©λΉ μ£Όμ΄μ§ 쿼리μ λΉλ λλ λΉμ¨μ μκ°νν©λλ€. μλ₯Ό λ€μ΄, ν μκ° λμ λΆλΉ νμ΄μ§λ·° μ λλ ν루 λμ μκ°λΉ μ¬μ΄νΈμ κ³ μ μΈμ
μλ₯Ό μκ³ μΆμ μ μμ΅λλ€.
TIMESERIES
λ₯Ό μ¬μ©νμ¬ μκ°μ λ°λΌ 맀νλ μμ¨μ΄ μλ λΌμΈ μ°¨νΈλ₯Ό μμ±ν©λλ€.μκ° κ²½κ³Όμ λ°λ₯Έ νκ· λ¨μΌ μμ¨ κ°μ νμνλ λΉλ³΄λλ₯Ό μμ±νλ €λ©΄
TIMESERIES
λ₯Ό μλ΅ν©λλ€.λ€μμ μ§λ 6μκ° λμ 10λΆλΉ APM νΈλμμ μ μ²λ¦¬λ λΉμ¨μ 보μ¬μ£Όλ λΌμΈ μ°¨νΈλ₯Ό μμ±νλ κΈ°λ³Έ 쿼리μ λλ€.
SELECT rate(count(*), 10 minute) FROM TransactionSINCE 6 hours ago TIMESERIESλ€μμ
rate
λ₯Ό μ¬μ©νμ¬ μ¬λ¬ κΈ°κ°μ λ°μ΄ν°λ₯Ό λΉκ΅νλ λ°©λ²μ μ€λͺ νλ 짧μ λμμ(3λΆ 21λΆ)μ λλ€.
stdvar()
ν¨μλ₯Ό μ¬μ©νμ¬ μ§μ λ μκ° λ²μμ λν μ«μ μμ±μ νμ€ λΆμ°μ λ°νν©λλ€.
λ¨μΌ μΈμκ° νμν©λλ€. μμ±μ΄ μ«μκ° μλλ©΄ 0 κ°μ λ°νν©λλ€.
sum()
ν¨μλ₯Ό μ¬μ©νμ¬ μ§μ λ μκ° λ²μ λμ μ«μ μμ±μ κΈ°λ‘λ κ° ν©κ³λ₯Ό λ°νν©λλ€.
λ¨μΌ μΈμκ° νμν©λλ€. μμ±μ΄ μ«μκ° μλλ©΄ 0 κ°μ λ°νν©λλ€.
uniqueCount()
ν¨μλ₯Ό μ¬μ©νμ¬ μ§μ λ μκ° λ²μ λμ μμ±μ λν΄ κΈ°λ‘λ κ³ μ κ°μ μλ₯Ό λ°νν©λλ€.
ν
쿼리 μ±λ₯μ μ΅μ ννκΈ° μν΄ μ΄ ν¨μλ 256κ° μ΄μμ κ³ μ κ°μ κ²μ¬νλ 쿼리μ λν΄ λλ΅μ μΈ κ²°κ³Όλ₯Ό λ°νν©λλ€.
uniques()
ν¨μλ₯Ό μ¬μ©νμ¬ μ§μ λ μκ° λ²μ λμ μμ±μ λν΄ κΈ°λ‘λ κ³ μ κ° λͺ©λ‘μ λ°νν©λλ€. facet
μ‘°νκ³Ό ν¨κ» μ¬μ©νλ©΄ κ° ν¨μ― κ°λ§λ€ κ³ μ ν μμ± κ° λͺ©λ‘μ΄ λ°νλ©λλ€.
limit
맀κ°λ³μλ μ νμ¬νμ
λλ€. μ 곡λμ§ μμΌλ©΄ ν¨μ―λΉ κ³ μ μμ± κ° 1,000κ°μ κΈ°λ³Έ μ νμ΄ μ μ©λ©λλ€. μ΅λ 10,000κΉμ§ λ€λ₯Έ limit
κ°μ μ§μ ν μ μμ΅λλ€. uniques()
ν¨μλ νκ³μ λλ¬ν λκΉμ§ λ°κ²¬λ κ³ μ μμ± κ°μ 첫 λ²μ§Έ μΈνΈλ₯Ό λ°νν©λλ€. λ°λΌμ λ°μ΄ν° μΈνΈμ 5,000κ°μ κ³ μ μμ± κ°μ΄ μκ³ νλκ° 1,000μΌλ‘ μ€μ λ κ²½μ° μ°μ°μλ λΉλμ κ΄κ³μμ΄ λ°κ²¬ν μ²μ 1,000κ°μ κ³ μ κ°μ λ°νν©λλ€.
쿼리 κ²°κ³Όμμ λ°νλ μ μλ κ°μ μ΅λ μλ uniques()
νλ facet
νλμ κ³±μ
λλ€. λ€μ 쿼리μμ λ°νλ μ μλ μ΄λ‘ μ μ΅λ κ° μλ 5λ°±λ§(5,000 x 1,000)μ
λλ€.
쿼리λλ λ°μ΄ν° μΈνΈμ 쿼리μ 볡μ‘μ±μ λ°λΌ λ©λͺ¨λ¦¬ λ³΄νΈ μ νμΌλ‘ μΈν΄ λ§€μ° ν° μΏΌλ¦¬κ° μ€νλμ§ μμ μ μμ΅λλ€.
From Transaction SELECT uniques(host,5000) FACET appName LIMIT 1000
λͺ κ°μ§ μμ±μ κ³ μ ν μ‘°ν©μ μκ³ μΆλ€λ©΄ SELECT uniques(tuple(x, y, ... z)) ...
νμμΌλ‘ 쿼리λ₯Ό ꡬμ±νμ¬ κ³ μ ν κ°μ λν ννμ λͺ¨λ κ°μ Έμμ κ΄κ³λ₯Ό μ μ§ν μ μμ΅λλ€. λ€μ 쿼리μμ tuple
μ index
λ° cellName
μμ ν¨κ» μ¬μ©λμ΄ λ κ°μ΄ μ‘°ν©λμ΄ λ°μνλ κ³ μ νλͺ©μ μ°Ύμ΅λλ€.
FROM NodeStatus SELECT uniques(tuple(index, cellName), 5)
λΉ μ§κ³ ν¨μ
NRQL 쿼리μμ μ«μκ° μλ λ°μ΄ν°μ λν΄ λΉ μ§κ³ ν¨μλ₯Ό μ¬μ©ν©λλ€.
accountId()
ν¨μλ₯Ό μ¬μ©νμ¬ μΏΌλ¦¬λ λ°μ΄ν°μ μ°κ²°λ κ³μ IDλ₯Ό λ°νν©λλ€. μ΄ ν¨μλ μΈμλ₯Ό μ¬μ©νμ§ μμ΅λλ€. λ€μμ λͺ κ°μ§ μμ 쿼리μ
λλ€.
μ΄ μΏΌλ¦¬λ λ°νλ κ° Transaction
μ΄λ²€νΈμ μ°κ²°λ κ³μ IDλ₯Ό λ°νν©λλ€.
SELECT accountId() FROM Transaction SINCE 1 day ago
μ΄ μΏΌλ¦¬λ κ° κ³μ IDμ μ°κ²°λ λ§μ§λ§ λ μ Transaction
μ΄λ²€νΈ μλ₯Ό λ°νν©λλ€.
SELECT count(*) FROM Transaction FACET accountId() SINCE 1 day ago
μ΄ μΏΌλ¦¬λ κ³μ IDκ° κ΅¬μ²΄μ μΌλ‘ 1
, 2
λλ 3
μ€ νλμΈ λ§μ§λ§ λ μ Transaction
μ΄λ²€νΈ μλ₯Ό λ°νν©λλ€.
SELECT count(*) FROM Transaction WHERE accountId() IN (1,2,3) SINCE 1 day ago
μ΅μ»€ ꡬ문 λΆμ κΈ°λ₯μΈ aparse()
λ₯Ό μ¬μ©νμ¬ λ¬Έμμ΄μμ νΉμ κ°μ μΆμΆν©λλ€. μ΄λ capture()
μ λμμ
λλ€.
aparse()
λ κ°μ§ μΈμλ₯Ό μ·¨ν©λλ€.
λ¬Έμμ΄ μμ±
μ΅μ»€ λ¬Έμμ΄κ³Ό μΆμΆ λ¬Έμκ° ν¬ν¨λ ν¨ν΄ λ¬Έμμ΄μ λλ€. μλ₯Ό λ€μ΄,
www.*.com
μ μ¬μ©ν΄ URLμμ λλ©μΈμ μΆμΆν μ μμ΅λλ€.aparse()
λ₯Ό μ¬μ©νλ κ²½μ°, ν¨ν΄ λ¬Έμμ΄μλ μμwww.
λ°.com
κ°μ μ΅μ»€κ° ν¬ν¨λκ³ ,*
λ‘ νμλ‘ νμν΄μΌ μΆμΆνλ €λ λ¬Έμμ΄μ μμΉλ₯Ό μλ³ν μ μμ΅λλ€.aparse()
ν¨ν΄ λ¬Έμμ΄μ λ€μ λ¬Έμλ₯Ό μ¬μ©ν©λλ€.%
:LIKE
μ μμμ κ°μ΄ λΉμΊ‘μ² μμΌλμΉ΄λ*
: μ κ·μ μΊ‘μ²λ₯Ό μ¬μ©νλ κ²κ³Ό μ μ¬ν μμΌλμΉ΄λ μΊ‘μ²μ€μ λ‘, μ΅μ»€ λ¬Έμμ΄μ λ¬Έμμ΄ μμ±μ μμμ΄λ λμ΄ μλ μ€κ°μ μμ£Ό λ°μν©λλ€.
μ΄ κ²½μ° μμΉ μλ κ°μ 무μνλ €λ©΄
%
μμΌλμΉ΄λλ₯Ό μ¬μ©ν©λλ€.(μ:%www.*.com%
)capture()
μ²λΌ,aparse()
μ λͺ¨λ κ²°κ³Όλ λ¬Έμμ΄μ λλ€. μν ν¨μμμ μ΄λ¬ν κ²°κ³Όλ₯Ό μ¬μ©νλ €λ©΄numeric()
ν¨μλ‘ λ³νν΄μΌ ν©λλ€.μ°Έκ³ :
aparse()
λ λμλ¬Έμλ₯Ό ꡬλΆνμ§ μμ΅λλ€.FROM PageViewSELECT aparse(browserTransactionName, 'website.com/*')λ¬Έμμ΄ μ€κ°μμ κ°μ μΆμΆνλ €λ©΄ ν¨ν΄ λ¬Έμμ΄μ μμκ³Ό λ λΆλΆμ λΉμΊ‘μ² μμΌλμΉ΄λ
%
λ₯Ό μ¬μ©ν©λλ€. μ:FROM LogSELECT count(*)FACET aparse(string, '%"itemId":"*"%')μ¬λ¬ κ°μ λ³μλ‘ μΆμΆν λλ μμκ° μ€μν©λλ€. μ:
FROM LogWITH aparse(string, 'POST: * body: {"itemId":"*","unitPrice":*}\n') AS (url, itemId, unitPrice)SELECT url, itemId, unitPriceλ³μμ λν λ³΄λ€ μμΈν λ΄μ©μ NRQL λ³μλ₯Ό μ°Έμ‘°νμμμ€.
blob μ ν μμ±μ blob()
ν¨μλ₯Ό μ¬μ©νμ¬ ν΄λΉ μμ±μ base-64λ‘ μΈμ½λ©λ λ¬Έμμ΄μ λ°νν©λλ€.
μ΄ ν¨μμλ λ€μκ³Ό κ°μ μ ν μ¬νμ΄ μμ΅λλ€.
blob()
μ λν νΈμΆμ ν¬ν¨νλ 쿼리μ μ΅λLIMIT
κ°μ 20μ λλ€.blob()
쿼리μWHERE
μ μμλ νΈμΆν μ μμ΅λλ€.blob()
ν¨μ― 쿼리 λλ μκ³μ΄ 쿼리μλ μ¬μ©ν μ μμ΅λλ€.Loggingμμ μ΄κ²μ΄ μ¬μ©λλ λ°©λ²μ λν μμΈν λ΄μ©μ κΈ΄ λ‘κ·Έ(blob)μμ λ°μ΄ν° μ°ΎκΈ°λ₯Ό μ°Έμ‘°νμμμ€.
Base-64λ‘ μΈμ½λ©λ blobμ λμ½λ©νλ €λ©΄
decode()
ν¨μλ₯Ό μ°Έμ‘°νμμμ€.SELECT message, blob(`newrelic.ext.message`)FROM Log WHERE newrelic.ext.message IS NOT NULL
buckets()
ν¨μλ₯Ό μ¬μ©νμ¬ FACET
μ‘°νλ‘ λΆν λ λ°μ΄ν°λ₯Ό λ²μλ₯Ό κΈ°λ°μΌλ‘ λ²ν·μΌλ‘ μ§κ³ν©λλ€. λ΄λ λ¦ λ°μ΄ν°λ² μ΄μ€μ μ«μ κ°μΌλ‘ μ μ₯λ λͺ¨λ μμ±μΌλ‘ λ²ν·μ λ§λ€ μ μμ΅λλ€.
μΈ κ°μ§ μΈμκ° νμν©λλ€.
Attribute name(μμ± μ΄λ¦)
μν λ²μμ μ΅λκ°(λͺ¨λ μ΄μκ°μ μ΅μ’ λ²ν·μ νμλ¨)
Total number of buckets(μ΄ λ²ν· μ)
μμΈν λ΄μ©κ³Ό μλ λ°μ΄ν°λ₯Ό λ²ν·μΌλ‘ λΆν μ μ°Έμ‘°νμμμ€.
concat()
ν¨μλ₯Ό μ¬μ©νμ¬ μΈμλ₯Ό μ°κ²°ν κ²°κ³Ό λ¬Έμμ΄μ λ°νν©λλ€.
μ«μ, λΆμΈ, νν λλ λ°°μ΄ μ νμ μΈμκ° μ΅λ 20κ°κΉμ§ μ 곡λ μ μμ΅λλ€. Null μΈμμ μ§μλμ§ μλ νμμ μΈμλ 무μλ©λλ€. μΈμκ° μ 곡λμ§ μμΌλ©΄, κ²°κ³Όλ λΉ λ¬Έμμ΄μ΄ λ©λλ€.
λΆλ μμμ μ«μ κ°μ μ°κ²°ν λ ν¬ν¨λλ μμ μλ¦Ώμλ₯Ό μ ννκΈ° μν΄ μ ν κ°λ₯ν μ λ°λ μΈμκ° μ 곡λ μ μμ΅λλ€.
κ²°κ³Ό λ¬Έμμ΄μ μ΅λ κΈΈμ΄λ 4096μμ λλ€.
μ΄ μΏΌλ¦¬λ μμ λ μ리μ λ μ΄λΈλ‘ νμμ΄ μ§μ λ PageView
μ΄λ²€νΈμ λ°±μλ λ° λ€νΈμν¬ κΈ°κ°μ λ¨μΌ λ¬Έμμ΄λ‘ λ°νν©λλ€.
FROM PageView SELECT concat('Backend Duration: ', backendDuration, ', Network Duration: ', networkDuration, precision: 2)
κ·Έλ¬λ©΄ λ€μκ³Ό κ°μ νμμΌλ‘ μλ΅μ΄ λ°νλ©λλ€.
Backend Duration: 0.69, Network Duration: 0
μ΄ μΏΌλ¦¬λ μ¬μ©μμ λμ, μ§μ λ° κ΅κ°λ‘ ꡬμ±λ λ¬Έμμ΄λ‘ ν¨μ― μ²λ¦¬λ PageView
μ΄λ²€νΈμ νκ· μ°κ²° μ€μ κΈ°κ°μ λ°νν©λλ€.
FROM PageView SELECT average(connectionSetupDuration) FACET concat(city, ', ', regionCode, ' ', countryCode) WHERE countryCode IN ('US', 'CA')
μ£Όμ΄μ§ μ
λ ₯ κ°μ λν΄ μ 곡λ λ¨μ κ°μ λ¨μ λ³νμ μννλ €λ©΄ convert()
ν¨μλ₯Ό μ¬μ©ν©λλ€.
OpenTelemetry μ¬μμ λ§μΆ° UCUM νμ€μ μ¬μ©ν΄ μκ°, κΈΈμ΄, 무κ², λ³Όλ₯¨, λ° λ°μ΄ν°μ λν μΌλ° λ¨μμ μ½μ΄κ° μ§μλ©λλ€. νΈμλ₯Ό μν΄ νμ€νλ μ½μ΄λ ft_us
, kilobytes
λ° Β΅s
μΈμ ft
κ°μ μΌλΆ λ체 μμ°μ΄λ‘ 보κ°λ©λλ€.
λ¨μλ λμλ¬Έμλ₯Ό ꡬλΆν©λλ€. μ¬μμμ λλ¬Έμλ₯Ό μꡬνμ§ μλ ν λͺ¨λ λ¨μλ μλ¬Έμμ
λλ€. μλ₯Ό λ€μ΄, λ°μ΄ν° λ¨μ 'bits'
λ λΉνΈμ μ ν¨νκ³ 'By'
λ λ°μ΄νΈμ λν΄ λλ¬Έμ B
κ° μ¬μ©λμ΄μΌ ν©λλ€.
μκ°μ κ°μ₯ ν° λ¨μλ νμλ ₯ year
μ΄λ©° νμ 365.25μΌμ
λλ€.
FROM Transaction SELECT convert(duration, 'ms', 'min') AS durationMin
FROM Product SELECT convert(sum(itemWeight), 'grams', 'lbs')
μ΄ μΏΌλ¦¬λ μ΄λ²€νΈ μ체μ λ¬Έμμ΄ μμ±μΌλ‘ μ μ₯λ λ¨μ μ λ³΄κ° μκ³ κ°μ μ΄λ‘ νμ€ννλ €κ³ νλ€κ³ κ°μ ν©λλ€.
FROM Metric SELECT average(convert(apm.mobile.external.duration, unit, 's')) WHERE appName = 'my-application'
RE2 κ΅¬λ¬Έμ΄ μλ μ κ·μμ μ¬μ©νμ¬ μμ±μμ κ°μ μΆμΆνλ €λ©΄ capture()
λ₯Ό μ¬μ©ν©λλ€.
λ κ°μ§ μΈμκ° νμν©λλ€.
Attribute name(μμ± μ΄λ¦)
μΊ‘μ² κ΅¬λ¬Έμ΄ μλ μ κ· ννμ(NRQLμ μ κ· ννμμ Pythonκ³Ό μ μ¬ν ꡬ문
r'...'
μ¬μ©)μΊ‘μ²ν λ, νΉμ μ΄λ¦μ κ³ λ €νμ¬ RE2 λͺ λͺ λ μΊ‘μ² κ΅¬λ¬Έ
...(?P<name> pattern )...
μ μ¬μ©νμ¬ ν¬ν¨λ ν¨ν΄μ μΊ‘μ²ν©λλ€.μ κ·μμ μΆκ°μ μΈ μΊ‘μ² κ·Έλ£Ήμ μ§μ νμ¬ μ¬λ¬ κ°μ μΊ‘μ²ν μ μμ΅λλ€. μ:
...(?P<name1> pattern1)...(?P<name2> pattern2)...
μ°Έκ³ : μ¬λ¬ κ°μ μΊ‘μ²ν λ κ° μΊ‘μ² λ¬Έμ μ΅λ 16κ°μ μΊ‘μ² κ·Έλ£Ήμ κ°μ§ μ μμΌλ©°, κ° NRQL 쿼리λ μ΅λ 5κ°μ μΊ‘μ² λ¬Έμ κ°μ§ μ μμ΅λλ€.
쿼리 κ²°κ³Όλ₯Ό κ°μ νκΈ° μν΄ μ κ·μ μΊ‘μ²λ₯Ό μ¬μ©νλ λ°©λ²μ νμΈνμμμ€.
ν
μ κ·μμ μ 체 μ λ ₯κ³Ό μΌμΉν΄μΌ ν©λλ€. μΊ‘μ² ννμμ΄ μμ κ²°κ³Όλ₯Ό μΆμΆνμ§ μλ κ²½μ°, μμ λλ λμ μΌλΆ λ§€μΉ μ κ·ννμμ μν ν¨ν΄μΈ
.*
κ° νμνμ§ νμΈν©λλ€. κ·Έλ¬λ λΆλΆ μ κ·ννμμΌλ‘ μΈν΄ 쿼리 μ€νμ΄ λλ €μ§ μ μμ΅λλ€.λ€μμ
capture()
λ₯Ό μ¬μ©νμ¬ λμ보λ κ°λ μ±μ λμ΄λ λ°©λ²μ 보μ¬μ£Όλ 짧μ λμμ(3λΆ 5λΆ)μ λλ€.μμΈν λ΄μ©μ μλ μλ₯Ό μ°Έμ‘°νμμμ€.
λ€μμ μΉμ¬μ΄νΈμ λλ©μΈ μ΄λ¦μ μ ννκ³
https://
λ° λ€μ κ²½λ‘λ₯Ό μ κ±°ν©λλ€..com
SELECT capture(pageUrl, r'https://(?P<baseUrl>.*.com)/.+')FROM PageView SINCE 1 day agoλ€μμ μ€λ₯ λ©μμ§μ 첫 λ²μ§Έ λ¨μ΄λ§ μΊ‘μ²ν©λλ€.
SELECT capture(errorMessage, r'(?P<firstWord>\S+)\s.+')FROM TransactionWHERE errorMessage IS NOT NULLSINCE 1 hour agoλ€μμ μΊ‘μ²λ HTTP λ©μλμ μν΄ ν¨μ―λ©λλ€.
SELECT count(*) FROM LogWHERE message LIKE '%HTTP%'FACET capture(message, r'.* "(?P<httpMethod>[A-Z]+) .*')λ€μμ μΊ‘μ²λ μμ μ΄λ¦μ΄
ExampleJob
μΈ μ κ·μκ³Ό μΌμΉνλmessage
μμ±μ΄ μλ λ‘κ·Έ μ΄λ²€νΈλ₯Ό κΈ°λ°μΌλ‘ κ²°κ³Όλ₯Ό νν°λ§ν©λλ€.SELECT message FROM LogWHERE capture(message, r'.*Job Failed: (?P<jobName>[A-Za-z]+),.*') = 'ExampleJob'SINCE 10 minutes agoλ€μμ λ‘κ·Έ λΌμΈμμ CPU μκ°μ ν©κ³λ₯Ό μΊ‘μ²ν©λλ€. μν μ°μ°μ μννλ €λ©΄ λͺ μμ μΌλ‘ μ«μλ‘ μΊμ€νΈν΄μΌ ν©λλ€.
SELECT sum(numeric(capture(message, r'.*CpuTime:\s(?P<cpuTime>\d+)')))FROM LogWHERE message LIKE '%CpuTime:%' SINCE 1 hour agoμ΄ μμμ NRQL λ³μλ λ‘κ·Έ λ©μμ§μμ μΊ‘μ²λ μ¬λ¬ κ°μ μ μ₯νλ λ° μ¬μ©λ©λλ€.
FROM LogWITH capture(message, r'POST to carts: (?P<URL>.*) body: {"itemId":"(?P<UUID>.*)","unitPrice":(?P<unitPrice>.*)}.*')AS (URL, UUID, unitPrice)SELECT URL, UUID, unitPriceWHERE URL IS NOT NULLNRQL λ³μμ λν λ³΄λ€ μμΈν λ΄μ©μ μ¬κΈ°λ₯Ό μ°Έμ‘°νμμμ€.
λ¬Έμμ΄κ³Ό blobμ λν΄ base-64 λ³νμ μννλ €λ©΄ decode()
λ₯Ό μ¬μ©ν©λλ€. μ
λ ₯ κ°(첫 λ²μ§Έ μΈμ)μ μΈμ½λ©(λ λ²μ§Έ μΈμ)μ μ§μ λ Base-64 νμ€μ μ¬μ©νμ¬ λμ½λ©λ©λλ€.
λ€μ λ¬Έμμ΄ κ°μ μ§μλλ μΈμ½λ© 맀κ°λ³μμ λλ€.
'base64': RFC4648 base-64 νμ€ μ¬μ©
'base64mime': RFC2045 base-64 νμ€(MIME) μ¬μ©
'base64url': RFC4648 base-64 standardμ URL λ° νμΌμ΄λ¦μ μμ ν μνλ²³ μ¬μ©
WHERE
λλFACET
μ μμλblob()
μ΄ νμ©λμ§ μμΌλ―λ‘, blob μ νμ΄ μλdecode()
WHERE
μ μ΄λ ν¨μ― 쿼리μμλ μ§μλμ§ μμ΅λλ€.λ¬Έμμ΄μ μΈμ½λ©νλ €λ©΄
encode()
ν¨μλ₯Ό μ°Έμ‘°νμμμ€.FROM Span SELECT entity.guid, decode(entity.guid, 'base64')WHERE entity.guid IS NOT NULLFROM Span SELECT count(*)WHERE entity.guid IS NOT NULLFACET entity.guid, decode(entity.guid, 'base64')FROM Span SELECT count(*)WHERE entity.guid IS NOT NULLAND decode(entity.guid, 'base64') NOT LIKE '%APM%'FROM LogWITH blob(`newrelic.ext.message`) AS encodedBlob,decode(encodedBlob, 'base64') AS decodedBlobSELECT encodedBlob, decodedBlobWHERE newrelic.ext.message IS NOT NULLLIMIT 10
dimensions()
ν¨μλ₯Ό μ¬μ©νμ¬ λ°μ΄ν° μ νμ λͺ¨λ μ°¨μ κ°μ λ°νν©λλ€.
μ νμ μΈμλ₯Ό μ¬μ©νμ¬ νΉμ μμ±μ λͺ μμ μΌλ‘ ν¬ν¨νκ±°λ μ μΈν μ μμ΅λλ€.
include
: ν¬ν¨ λͺ©λ‘μ΄ μλ κ²½μ°dimensions()
ν΄λΉ μμ±μΌλ‘ μ νλ©λλ€.exclude
: μ μΈ λͺ©λ‘μ΄ μλ κ²½μ°,dimensions()
κ³μ°μμ ν΄λΉ μμ±μ΄ 무μλ©λλ€.FROM Metric SELECT count(node_filesystem_size)TIMESERIES FACET dimensions()FACET
μ‘°νκ³Ό ν¨κ» μ¬μ©νλ©΄dimensions()
λ Prometheusκ° μ§κ³λμ§ μμ 쿼리μμ μλνλ λ°©μκ³Ό μ μ¬νκ² μ΄λ²€νΈ μ νμμ μ¬μ© κ°λ₯ν λͺ¨λ ν¨μ―μ λν΄ κ³ μ ν μκ³μ΄μ μμ±ν©λλ€.
λ¬Έμμ΄μ λν΄ Base-64 λ³νμ μννλ €λ©΄ encode()
λ₯Ό μ¬μ©ν©λλ€. μ
λ ₯ κ°(첫 λ²μ§Έ μΈμ)μ μΈμ½λ©(λ λ²μ§Έ μΈμ)μ μ§μ λ Base-64 νμ€μ μ¬μ©νμ¬ μΈμ½λ©λ©λλ€.
λ€μ λ¬Έμμ΄ κ°μ μ§μλλ μΈμ½λ© 맀κ°λ³μμ λλ€.
'base64': RFC4648 base-64 νμ€ μ¬μ©
'base64mime': RFC2045 base-64 νμ€(MIME) μ¬μ©
'base64url': RFC4648 base-64 standardμ URL λ° νμΌμ΄λ¦μ μμ ν μνλ²³ μ¬μ©
λ¬Έμμ΄μ΄λ blobμ λμ½λ©νλ €λ©΄
decode()
ν¨μλ₯Ό μ°Έμ‘°νμμμ€.encode()
λ Blobμ μ§μλμ§ μμ΅λλ€.FROM PageView SELECT session, encode(session, 'base64')
CIDR IP μ£Όμμμ κΈ°λ³Έ λ€νΈμν¬ μ£Όμλ₯Ό μ»μΌλ €λ©΄ cidrAddress()
ν¨μλ₯Ό μ¬μ©ν©λλ€.
cidrAddress()
λ λ€μ μΈμλ₯Ό μ¬μ©ν©λλ€.
attribute
- IP μ£Όμ μ체 λλ CIDR νκΈ°λ²μ λ°λ₯Έ μ λμ¬ κΈΈμ΄κ° ν¬ν¨λ λ¬Έμμ΄ κ°μ λλ€.- μ΄λ λ¬Έμμ΄ μμ±μ΄κ±°λ λ°μ΄νλ‘ λ¬ΆμΈ λ¬Έμμ΄ λ¦¬ν°λ΄μΌ μ μμ΅λλ€.
- IP μ£Όμλ IPv4 μ£Όμμ¬μΌ ν©λλ€.
number
- μ λμ¬ κΈΈμ΄λ₯Ό λνλ΄λ μ μ κ°μ λλ€.- μ΄λ μ μ μμ±μ΄κ±°λ μ μ κ°μΌ μ μμ΅λλ€.
- μμ± λ§€κ°λ³μκ° CIDR νκΈ°λ²μΈ κ²½μ° μ΄ λ§€κ°λ³μλ μ νμ¬νμ΄λ©° CIDR λ¬Έμμ΄μ μ 곡λ μ λμ¬ κΈΈμ΄λ³΄λ€ μ°μ ν©λλ€.
cidrFormat
- λ€νΈμν¬ μ£Όμ μΆλ ₯μ CIDR νκΈ°λ²μΌλ‘ μ§μ ν΄μΌ νλμ§ μ¬λΆλ₯Ό κ²°μ νλ λ° μ¬μ©λλ μ νμ λΆμΈ κ°μ λλ€. κΈ°λ³Έκ°μ trueμ λλ€.cidrAddress()
ν¨μλ μμ± λ° μ«μ 맀κ°λ³μμ μ ν¨ν IP μ£Όμμ μ λμ¬ κΈΈμ΄κ° ν¬ν¨λμ΄ μλ κ²½μ° νμ κ°μ λ°νν©λλ€. 맀κ°λ³μ μ λ ₯μ΄ μ ν¨νμ§ μμΌλ©΄cidrAddress()
null
μ λ°νν©λλ€.λ€μ 쿼리λ SyntheticRequest μ΄λ²€νΈ μ νμμ κ°μ₯ λ§μ μμ²μ μ²λ¦¬νλ μλΈλ·μ λ°νν©λλ€.
FROM SyntheticRequest SELECT count(*) FACET cidrAddress(serverIPAddress, 24)κ·Έλ¬λ©΄ λ€μκ³Ό κ°μ νμμΌλ‘ μλ΅μ΄ λ°νλ©λλ€.
Cidr μλ² μ£Όμ IP μ£Όμ
count
10.0.0.0/24
6k
10.10.1.0/24
4k
10.0.14.0/24
1k
μ΄ μΏΌλ¦¬λ CIDR λ²μ 10.0.0.0-10.0.0.255 λ΄μ μ‘΄μ¬νλ
serverIPAddress
μμ±μ λͺ¨λ IP μ£Όμλ₯Ό λ°νν©λλ€.FROM SyntheticRequest SELECT uniques(serverIPAddress)WHERE cidrAddress(serverIPAddress, 24) = '10.0.0.0/24'μ΄ μΏΌλ¦¬λ CIDR λ²μ 10.0.0.0/24 λλ 10.10.1.0/24μ μνλ
serverIPAddress
κ°μ ν¬ν¨νλ λ μ½λλ₯Ό μ μΈνλ©΄μ λͺ¨λ λ μ½λ μλ₯Ό λ°νν©λλ€.FROM SyntheticRequest SELECT count(*)WHERE cidrAddress(serverIPAddress, 24) NOT IN ('10.0.0.0/24', '10.10.1.0/24')
...WHERE eventType() = 'EventNameHere'......FACET eventType()...
FACET μ‘°νμμ eventType()
ν¨μλ₯Ό μ¬μ©νμ¬ μ νν λ°μ΄ν° μ νλ³λ‘ κ²°κ³Όλ₯Ό λΆλ₯νκ±°λ WHERE μ‘°νμμ νΉμ λ°μ΄ν° μ νμΌλ‘ κ²°κ³Όλ₯Ό νν°λ§ν©λλ€. μ΄λ filter() λ° percent() ν¨μλ₯Ό μ¬μ©νμ¬ νΉμ λ°μ΄ν° μ νμ λμμΌλ‘ μ§μ ν λ νΉν μ μ©ν©λλ€.
μ€μ
μ΄ μ»¨ν μ€νΈμμ "event type"μ NRQL μΏΌλ¦¬λ‘ μ‘μΈμ€ν μ μλ λ°μ΄ν° μ νμ λνλ λλ€.
μ΄ μΏΌλ¦¬λ μ΄ Transaction
κ° κ²°κ³Ό μ€ μ΄ TransactionError
κ° κ²°κ³Όμ λ°±λΆμ¨μ λ°νν©λλ€. eventType()
ν¨μλ₯Ό μ¬μ©νμ¬ filter()
ν¨μκ° μλ νΉμ μ νμ λ°μ΄ν°λ₯Ό λμμΌλ‘ μ§μ ν μ μμ΅λλ€.
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
μ΄ μΏΌλ¦¬λ κ° λ°μ΄ν° μ ν( Transaction
λ° TransactionError
)κ° λ°ννλ λ μ½λ μλ₯Ό νμν©λλ€.
SELECT count(*) FROM Transaction, TransactionError FACET eventType() TIMESERIES
getField()
ν¨μλ₯Ό μ¬μ©νμ¬ λλ©μ
λ©νΈλ¦ λ°μ΄ν°κ°μ λ³΅ν© λ°μ΄ν° μ νμμ νλλ₯Ό μΆμΆν©λλ€.
λ€μ μΈμλ₯Ό μ·¨ν©λλ€.
λ©νΈλ¦ μ ν | μ§μλλ νλ |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
μ:
SELECT max(getField(mySummary, count)) FROM Metric
SELECT sum(mySummary) FROM Metric where getField(mySummary, count) > 10
getCdfCount()
λ λμ λΆν¬ ν¨μ μ ꡬνμΌλ‘, threshold
μ΄νμ attribute
μ«μ κ°μ λ°νν©λλ€.
νλμ μκ³κ°λ§ νμ©λ©λλ€. Attribute
λ μ«μ μμ±μ΄κ±°λ λΆν¬ λ©νΈλ¦ μμ±μΌ μ μμ΅λλ€. νλμ 쿼리μ νΌν© μ νμ΄ νμ©λ©λλ€.
μ«μ μ νμ κ²½μ° μμ±μ΄ μκ³κ°λ³΄λ€ μκ±°λ κ°μΌλ©΄ 1μ λ°ννκ³ , κ·Έλ μ§ μμΌλ©΄ 0μ λ°νν©λλ€. λΆν¬μ κ²½μ° λΆν¬κ° λνλ΄λ λ°μ΄ν° μΈνΈμ κ°μλ₯Ό λ°νν©λλ€. λ€λ₯Έ λͺ¨λ μ νμ κ²½μ° 0μ λ°νν©λλ€.
μ΄ μΏΌλ¦¬λ firstPaint
κ° 1μ΄ μ΄νμΈ μ΄λ²€νΈ μλ₯Ό λ°νν©λλ€.
FROM PageView SELECT sum(getCdfCount(firstPaint, 1.0))
if()
λ₯Ό μ¬μ©νμ¬ μΏΌλ¦¬ μ 체μμ if-then-else μ μ΄ νλ¦ μμ
μ μνν©λλ€.
if()
μΈ κ°μ§ μΈμλ₯Ό μ·¨ν©λλ€.
condition
-true
λλ falseλ‘ νκ°λ μ μλ ννμμ λλ€.false
trueValue
- μ΄ κ°μ λΆμΈ ννμμ΄ trueμΈ κ²½μ° λ°νλ©λλ€.true
falseValue
- μ΄ μ νμ κ°μ λΆμΈ ννμμ΄false
μΈ κ²½μ° λ°νλκ³ , μ 곡λμ§ μμΌλ©΄NULL
μ΄ λ°νλ©λλ€.FROM LogSELECT count(*)FACET if(level_name = 'ERROR', 'ERROR', 'NOT_ERROR')FROM LogSELECT count(*)FACET if(level_name = 'INFO' OR level_name = 'WARNING', 'NOT_ERROR', 'ERROR')μ€μ²©λ if() ν¨μλ₯Ό μ¬μ©νμ¬ μ‘°κ±΄λΆ λ Όλ¦¬λ₯Ό μΆκ°ν©λλ€.
FROM Transaction SELECT count(*)FACET if(appName LIKE '%java%', 'Java',if(appName LIKE '%kafka%', 'Kafka', 'Other'))
JSON ꡬ문 λΆμ ν¨μμΈ jparse()
λ₯Ό μ¬μ©νμ¬ λ¬Έμμ΄ κ°μ ꡬ문 λΆμνκ³ NRQLμ λ€λ₯Έ μΌλ₯ κ° μ νμ²λΌ μ²λ¦¬ν μ μλ κ°μ 맡/λͺ©λ‘(λλ μ€μ²© ꡬ쑰)μ μμ±ν©λλ€.
jparse()
λ κ°μ§ μΈμλ₯Ό μ·¨ν©λλ€.
attribute
- JSON λ¬Έμμ΄ κ°μ λλ€.path
-attribute
νλΌλ―Έν° λ΄μμ JSONμ νΉμ λΆλΆμ μ§μ μ°Έμ‘°νλ λ° μ¬μ©λλ μ νμ λ¬Έμμ΄ κ°μ λλ€. μλ JSON ꡬ문 λΆμ κ²½λ‘ κ΅¬λ¬Έ μ°Έμ‘° μΉμ μ μ°Έμ‘°νμμμ€.jparse()
ν¨μλ RFC 8259 ν¬λ§·μ λ°λΌ JSON κ°μ ꡬ문 λΆμν©λλ€.path
맀κ°λ³μ μμ΄jparse()
ν¨μλ₯Ό μ¬μ©νλ©΄ μμ§λ ¬νλ JSON κ°μ΄ λ°νλ©λλ€.λκ΄νΈλ₯Ό μ¬μ©νμ¬ ν€/μΈλ±μ€λ₯Ό ν΅ν΄
jparse()
κ²°κ³Όμμ κ°λ³ κ°μ κ°μ Έμ€κ³WITH
μ μ μ¬μ©νμ¬ JSON ν€λ₯Ό μμ±μ μ§μ 맀νν μ μμ΅λλ€.Referencing a key
λ€μ 쿼리λ
jsonString
μμ± λ΄μμuserNames
ν€λ₯Ό μ°Έμ‘°νκ³['abc', 'xyz']
λ₯Ό λ°νν©λλ€.WITH '{"userNames": ["abc", "xyz"]}' AS jsonString SELECT jparse(jsonString)[userNames]Referencing an index
λ€μ 쿼리λ
jsonString
μμ± λ΄μ μΈλ±μ€0
μ μ°Έμ‘°νκ³'abc'
λ₯Ό λ°νν©λλ€.WITH '["abc", "xyz"]' AS jsonString SELECT jparse(jsonString)[0]λ€μ 쿼리λ
WITH
μ μμjparse()
λ₯Ό μ¬μ©νμ¬ JSON ν€userName
λ°id
λ₯Ό NRQL λ³μμ 맀ννλ―λ‘ μΏΌλ¦¬μ λλ¨Έμ§ λΆλΆμμ μ¬μ©λ μ μμ΅λλ€.WITH '{"userName": "test", "unused": null, "id": 100}' AS jsonString, jparse(jsonString) AS (userName, id) SELECT userName, idJSON λ¬Έμμ΄μ νΉμ κ°μ ꡬ문 λΆμνλ €λ©΄
path
맀κ°λ³μλ₯Ό μ¬μ©ν μ μμ΅λλ€.JSON λ°μ΄ν°λ μ€μν ννμ μ¬λ¬ λ μ΄μ΄λ‘ μ€μ²©λλ κ²μ΄ μΌλ°μ μ λλ€. κ²½λ‘ κ΅¬λ¬Έμ μ¬μ©νλ©΄ JSON λ°μ΄ν°μ νΉμ λΆλΆμ μ§μ μ°Έμ‘°ν μ μμ΅λλ€.
μμ λ°μ΄ν°:
{"valueA": "test","valueB": {"nestedValue1": [1, 2, 3],"nestedValue2": 100},"valueC": [{ "id": 1, "label": "A", "other": 7 },{ "id": 2, "label": "B", "other": 9 },{ "id": 3, "label": "C", "other": 13 }]}μ λ°μ΄ν°λ₯Ό μ¬μ©ν κ²½λ‘ κ΅¬λ¬Έ μ:
Path Syntax Example
Result Description
Result
valueA
ν€μ κ° λ°ν
"test"
["valueA"]
ν€μ κ° λ°ν
"test"
[valueA, valueC]
ν€ κ° λͺ©λ‘ λ°ν
["test", [{"id": 1β¦}, {"id": 2β¦}], {"id": 3β¦}]]
valueB.nestedValue2
ν€μ κ° λ°ν
100
valueC[0]
μΈλ±μ€ 0μ λͺ©λ‘ κ°μ λ°νν©λλ€.
0
{"id": 1β¦}
valueC[0,2]
μΈλ±μ€
0
κ³Ό 2μ λͺ©λ‘ κ°μ λ°νν©λλ€.2
[{"id": 1β¦}, {"id": 3β¦}]
valueC[0:2]
λ λ²μ§Έ μΈλ±μ€μ κ°μ μ μΈνκ³ μ²« λ²μ§Έ μΈλ±μ€μμ λ λ²μ§Έ μΈλ±μ€κΉμ§μ λͺ©λ‘ κ° λ²μ λ°νν©λλ€. μ΄ κ²½μ°, μΈλ±μ€
0
κ³Ό1
μ λͺ©λ‘ κ°μ λ°νν©λλ€.[{"id": 1β¦}, {"id": 2β¦}]
valueC[:2]
λ λ²μ§Έ μΈλ±μ€μ κ°μ μ μΈνκ³ μ²μλΆν° λ λ²μ§Έ μΈλ±μ€κΉμ§ λͺ©λ‘ κ°μ λ²μ λ°νν©λλ€. μ΄ κ²½μ°, μΈλ±μ€
0
κ³Ό1
μ λͺ©λ‘ κ°μ λ°νν©λλ€.[{"id": 1β¦}, {"id": 2β¦}]
valueC[:-2]
λ§μ§λ§ nμ μ μΈν λͺ¨λ λͺ©λ‘ κ°μ λ°νν©λλ€. μ¬κΈ°μ nμ μ½λ‘ λ€μ μλ μμμ λλ€. (μ:
[:-n]
) μ΄ κ²½μ°, μΈλ±μ€0
μ λͺ©λ‘ κ°μ΄ λ°νλ©λλ€.[{"id": 1β¦}]
valueC[1:]
μ§μ λ μΈλ±μ€λΆν° λͺ©λ‘ λκΉμ§μ λͺ©λ‘ κ° λ²μλ₯Ό λ°νν©λλ€. μ΄ κ²½μ°, μΈλ±μ€
1
κ³Ό2
μ λͺ©λ‘ κ°μ λ°νν©λλ€.[{"id": 2β¦}, {"id": 3β¦}]
valueC[-1:]
λ§μ§λ§ nμ λͺ©λ‘ κ°μ λ°νν©λλ€. μ¬κΈ°μ nμ μ½λ‘ μμ μλ μμμ λλ€.(μ:
[-n:]
) μ΄ κ²½μ° μΈλ±μ€2
μ λͺ©λ‘ κ°μ΄ λ°νλ©λλ€.[{"id": 3β¦}]
valueC[*]
λͺ¨λ λͺ©λ‘ κ° λ°ν
[{"id": 1β¦}, {"id": 2β¦}, {"id": 3β¦}]
valueC[*].id
λͺ¨λ λͺ©λ‘ ꡬμ±μμμ μ§μ λ ν€ κ° λ°νν©λλ€. μ΄ κ²½μ°λ
id
ν€ κ°μ λλ€.[1, 2, 3]
valueC[*]["label", "other"]
λͺ¨λ λͺ©λ‘ ꡬμ±μμμ μ§μ λ ν€λ₯Ό λ°νν©λλ€. μ΄ κ²½μ°λ
label
κ³Όother
ν€ κ°μ λλ€.[["A", 7],β¦]
μ:
λ€μ 쿼리λ
jsonString
μμ± λ΄μ JSON λ¬Έμμ΄μ ꡬ문 λΆμν©λλ€.WITH '{"user": {"name": "John", "id": 5}}' AS jsonString SELECT jparse(jsonString)μ΄ μΏΌλ¦¬λ μμ§λ ¬νλ JSON λ¬Έμμ΄μ λ°νν©λλ€.
{ "user": { "name": "John", "id": 5 } }μΌλ°μ μΈ λ¬Έμ λ λ‘κ·Έ λ©μμ§ λ΄μ ꡬ쑰νλ λ§μ λ°μ΄ν°κ° μ¨κ²¨μ Έ μλ€λ κ²μ λλ€.
aparse()
λ°jparse()
λ₯Ό νμ©νλ©΄ λ Έμ΄μ¦λ₯Ό μ κ±°νκ³ νΉμ κ°μ μ°Ύμ μ μμ΅λλ€.λ€μ 쿼리λ
aparse()
λ₯Ό νΈμΆνμ¬logMessage
μμ±μμ JSON λ°μ΄ν°λ₯Ό μΆμΆν©λλ€.jparse()
λ°user.name
κ²½λ‘ λ§€κ°λ³μλ₯Ό μ¬μ©νμ¬ μΆμΆλ JSON λ°μ΄ν°μμuser.name
νλλ₯Ό ꡬ문 λΆμν©λλ€.WITH '1693242121842: value=\'{"user": {"name": "John", "id": 5}}\', useless=stuff' AS logMessage, aparse(logMessage, '%: value=\'*\'%') AS jsonString SELECT jparse(jsonString, 'user.name')
λ€μ 쿼리λ
jsonString
μμ± λ΄μ κ°μ²΄ λͺ©λ‘μμ κ°id
νλλ₯Ό ꡬ문 λΆμνκ³ μ΄λ¬ν κ°μ λ°°μ΄λ‘ μΆλ ₯ν©λλ€.WITH '{"users": [{"name": "A", "id": 5}, {"name": "B", "id": 10}]}' AS jsonString, jparse(jsonString, 'users[*].id') AS ids SELECT idsμ 쿼리λ
[5, 10]
μ λ°νν©λλ€.κ΄λ ¨ ν¨μ:
mapKeys()
,mapValues()
length()
ν¨μλ₯Ό μ¬μ©νμ¬ λ¬Έμμ΄ κ°μ κΈΈμ΄ λλ λ°°μ΄ κ°μ μμ μλ₯Ό λ°νν©λλ€.
λ¨μΌ μΈμκ° νμν©λλ€.
μ΄ μΏΌλ¦¬λ PageView
μ΄λ²€νΈμμ κ° URL λ¬Έμμ΄μ κΈΈμ΄λ₯Ό λ°νν©λλ€.
SELECT length(pageUrl) FROM PageView
룩μ ν μ΄λΈμ μ λ‘λν κ²½μ°, ν μ΄λΈ μ΄λ¦κ³Ό ν¨κ» μ΄ ν¨μλ₯Ό μ¬μ©ν΄ 쿼리μμ ν μ΄λΈμ λ°μ΄ν°μ μ‘μΈμ€ν μ μμ΅λλ€. λ€μμ μμ 쿼리μ λλ€.
FROM LogSELECT count(*)WHERE hostname IN (FROM lookup(myHosts) SELECT uniques(myHost))
λ³΄λ€ μμΈν λ΄μ©μ 룩μ ν μ΄λΈ λ°μ΄ν°λ₯Ό 쿼리νλ λ°©λ²μ μ°Έμ‘°νμμμ€.
lower()
ν¨μλ₯Ό μ¬μ©νμ¬ λ¬Έμμ΄ κ°μ λͺ¨λ μνλ²³ λ¬Έμλ₯Ό μλ¬Έμλ‘ λ³κ²½ν©λλ€.
μΈμ:
str
- μλ¬Έμλ‘ λ³νν λ¬Έμμ΄ κ°μ λλ€.- μ¬κΈ°μλ λ°μ΄νλ‘ λ¬ΆμΈ λ¦¬ν°λ΄ λ¬Έμμ΄, 쿼리λ λ¬Έμμ΄ μμ±, λ¬Έμμ΄μ λ°ννλ ν¨μ λλ λ¨μΌ λ¬Έμμ΄ κ°μ λ°ννλ νμ 쿼리 λ± λ¬Έμμ΄λ‘ νκ°λλ λͺ¨λ κ²μ΄ ν΄λΉλ μ μμ΅λλ€.
- μ΄ μΈμκ° nullλ‘ νκ°λλ©΄
lower()
ν¨μλ nullμ λ°νν©λλ€.
μ΄ μΏΌλ¦¬λ 쿼리μ λ€μν λΆλΆμμ
lower()
ν¨μλ₯Ό μ¬μ©νλ λ°©λ²μ 보μ¬μ€λλ€.FROM PageActionSELECT latest(lower(actionName))WHERE lower(actionName) = lower('acmePageRenderedEvent') OR lower(actionName) = lower('SubmitLogin')FACET concat(actionName, ':', lower(actionName))lower(str)
μκ΄λ ¨ ν¨μ:
upper()
attribute
맀κ°λ³μ λ΄μμ μ
λ ₯μΌλ‘ λ§΅μ΄ μ 곡λ κ²½μ° mapKeys()
ν¨μλ₯Ό μ¬μ©νμ¬ ν€ λͺ©λ‘μ λ°νν©λλ€.
WITH '{"userResult1": 100, "userResult2": 200, "userResult3": 4}' AS jsonString SELECT mapKeys(jparse(jsonString)) AS keys
μμ 쿼리λ
jparse()
ν¨μλ₯Ό μ¬μ©νμ¬jsonString
μμ± λ΄μ JSON λ¬Έμμ΄μ 맡μΌλ‘ μμ§λ ¬νν©λλ€.mapKeys()
ν¨μλ₯Ό νΈμΆνμ¬ μ΄ λ§΅ λ΄μ λͺ¨λ ν€ λͺ©λ‘μ μΆμΆν©λλ€.- μ΄ ν€ λͺ©λ‘μ
keys
μμ±μ λ°μΈλ©ν©λλ€.
μ 쿼리λ₯Ό μ€ννλ©΄ keys
μ ['userResult1', 'userResult2', 'userResult3']
λͺ©λ‘μ΄ ν¬ν¨λ©λλ€.
WITH '{"value1": "test", "value2": {"nestedValue1": [1, 2, 3], "nestedValue2": 100}}' AS jsonString SELECT mapKeys(jparse(jsonString)) AS keys
μ 쿼리λ jsonString
μμ± λ΄μ JSON λ¬Έμμ΄μμ κ°μ₯ λ°κΉ₯μͺ½ ν€λ§ μΆμΆν©λλ€. 쿼리λ₯Ό μ€ννλ©΄ keys
μ ['value1', 'value2']
λͺ©λ‘μ΄ ν¬ν¨λ©λλ€.
attribute
맀κ°λ³μ λ΄μ μ
λ ₯μΌλ‘ λ§΅μ΄ μ 곡λ κ²½μ° κ° λͺ©λ‘μ λ°ννλ €λ©΄ mapValues()
ν¨μλ₯Ό μ¬μ©ν©λλ€.
WITH '{"userResult1": 100, "userResult2": 200, "userResult3": 4}' AS jsonString SELECT mapValues(jparse(jsonString)) AS values
μμ 쿼리λ
jparse()
ν¨μλ₯Ό μ¬μ©νμ¬jsonString
μμ± λ΄μ JSON λ¬Έμμ΄μ 맡μΌλ‘ μμ§λ ¬νν©λλ€.mapValues()
ν¨μλ₯Ό νΈμΆνμ¬ μ΄ λ§΅ λ΄μ λͺ¨λ κ° λͺ©λ‘μ μΆμΆν©λλ€.- μ΄ κ° λͺ©λ‘μ
values
μμ±μ λ°μΈλ©ν©λλ€.
μ 쿼리λ₯Ό μ€ννλ©΄ values
μ [100, 200, 4]
λͺ©λ‘μ΄ ν¬ν¨λ©λλ€.
WITH '{"value1": "test", "value2": {"nestedValue1": [1, 2, 3], "nestedValue2": 100}}' AS jsonString SELECT mapValues(jparse(jsonString)) AS values
μ 쿼리λ jsonString
μμ± λ΄μ JSON λ¬Έμμ΄μμ κ°μ₯ λ°κΉ₯μͺ½ κ°μ μΆμΆν©λλ€. 쿼리λ₯Ό μ€νν ν values
"test"
λ¬Έμμ΄ λ° μ€μ²© κ°μ²΄ λͺ©λ‘μ΄ ν¬ν¨λ©λλ€.
μ΄λ JSON λ·°μμ λ³Ό μ μμ΅λλ€.
"contents": [ { "function": "alias", "alias": "values", "contents": { "constant": [ "test", { "nestedValue1": [ 1, 2, 3 ], "nestedValue2": 100 } ] } }],
minuteOf()
ν¨μλ₯Ό μ¬μ©νμ¬ μ ν¨ν νμμ€ν¬ν κ°μ 보μ νλ μμ±μ 'λΆ' λΆλΆ(0-59λΆ)λ§ μΆμΆν©λλ€. μ΄λ hourOf()
, weekOf()
κ³Ό κ°μ ν¨μμλ μ μ©λ©λλ€. μκ° κΈ°λ° ν¨μμ μ 체 λͺ©λ‘μ μκ° μ λ°μ κ·Έλ£Ή κ²°κ³Ό λ¬Έμμ νλ₯Ό μ°Έμ‘°νμμμ€.
mod()
ν¨μλ₯Ό μ¬μ©νμ¬ μ 곡λ μ«μ μμ± κ°(첫 λ²μ§Έ μΈμ λλ νΌμ μ)μ μ«μ κ°(λ λ²μ§Έ μΈμ λλ μ μ)μΌλ‘ λλ ν νν κ³μλ₯Ό λ°νν©λλ€. . μ΄ λͺ¨λλ‘ μ°μ°μ WHERE
μ 쑰건 λ΄μμ κ²°κ³Όμ μμ νμ μ§ν©μΌλ‘ νν°λ§νκ±°λ FACET
μ λ΄μμ κ²°κ³Ό μ§ν©μ μΈλΆννλ λ°©λ²μΌλ‘ μ¬μ©ν μ μμ΅λλ€.
FROM Transaction SELECT * WHERE mod(port, 2) = 1
FROM NrConsumption SELECT uniques(hostId, 10000) SINCE 1 day AGO FACET mod(hostId, 10)
λ¬Έμμ΄ λ΄μμ νμ λ¬Έμμ΄μ μμΉλ₯Ό μ°ΎμΌλ €λ©΄ position()
ν¨μλ₯Ό μ¬μ©ν©λλ€. 맀μΉμ λμλ¬Έμλ₯Ό ꡬλΆν©λλ€.
μΈμ:
str
- νμ λ¬Έμμ΄μ μ°Ύμ λ¬Έμμ΄μ λλ€.- μ¬κΈ°μλ λ°μ΄νλ‘ λ¬ΆμΈ λ¦¬ν°λ΄ λ¬Έμμ΄, 쿼리λ λ¬Έμμ΄ μμ±, λ¬Έμμ΄μ λ°ννλ ν¨μ λλ λ¨μΌ λ¬Έμμ΄ κ°μ λ°ννλ νμ 쿼리 λ± λ¬Έμμ΄λ‘ νκ°λλ λͺ¨λ κ²μ΄ ν΄λΉλ μ μμ΅λλ€.
substr
- str λ΄μμ κ²μν λ¬Έμμ΄μ λλ€.occurrence
- λ°νν substrμ μ΄λ λΆλΆμ΄ λμ€λμ§λ₯Ό λνλ λλ€.κΈ°λ³Έ:
0
μμμΈ κ²½μ° 0μ κΈ°μ€μΌλ‘ strμ μμ λΆλΆμμ nλ²μ§Έ substrμ μ°Ύμ΅λλ€.
μμμΈ κ²½μ° strμ λ λΆλΆμμ nλ²μ§Έ substrμ μ°Ύμ΅λλ€. substrμ λ§μ§λ§ μ΄μ»€λ°μ€λ -1 μ΄μ»€λ°μ€μ λλ€.
λ³μΉ:
indexOf(str, substr [, occurrence])
-indexOf()
λposition()
ν¨μμ λ€λ₯Έ μ΄λ¦μ λλ€.λ°ν:
str λ΄μ substr μμ λ¬Έμμ 0λΆν° μμνλ μΈλ±μ€μ λλ€.
strμ΄ nullμ΄κ±°λ substrμ΄ nullμ΄κ±°λ μ°Έμ‘°λ substr λ°μμ μ°Ύμ μ μλ κ²½μ° Nullμ΄ λ°νλ©λλ€.
μ΄ μΏΌλ¦¬λ
position()
ν¨μλ₯Ό μ¬μ©νμ¬ λ¬Έμμ΄ λ΄μμ λ€μν νμ λ¬Έμμ΄μ μμΉ μΈλ±μ€λ₯Ό μ°Ύλ λ°©λ²μ 보μ¬μ€λλ€. μ¬κΈ°μμλsubstring()
ν¨μ μΈμ λ΄μμposition()
ν¨μλ₯Ό μ¬μ©νλ λ°©λ²λ λ³Ό μ μμ΅λλ€.FROM PageViewWITH position(pageUrl, ':') AS FirstColon,position(pageUrl, '/', 1) + 1 AS DomainBegin,position(pageUrl, '/', 2) AS DomainEnd,DomainEnd - DomainBegin AS DomainLengthSELECT pageUrl, FirstColon, substring(pageUrl, 0, FirstColon) AS Protocol,DomainBegin, DomainEnd, DomainLength, substring(pageUrl, DomainBegin, DomainLength) AS Domain,position(pageUrl, '/', -1) AS LastSlash,substring(pageUrl, position(pageUrl, '/', -1)) AS PathEndposition(str, substr [, occurrence])
μ
round()
ν¨μλ₯Ό μ¬μ©νμ¬ μμ±μ λ°μ¬λ¦Όλ κ°μ λ°νν©λλ€.
μ νμ μΌλ‘ round()
λ λ λ²μ§Έ μΈμ to_nearest
λ₯Ό μ¬μ©νμ¬ μ²« λ²μ§Έ μΈμλ₯Ό λ λ²μ§Έ μΈμμ κ°μ₯ κ°κΉμ΄ λ°°μλ‘ λ°μ¬λ¦Όν μ μμ΅λλ€. to_nearest
λ μμμΌ μ μμ΅λλ€.
SELECT round(n [, to_nearest])
stddev()
ν¨μλ₯Ό μ¬μ©νμ¬ μ§μ λ μκ° λ²μμ κ±Έμ³ μ«μ μμ±μ λν΄ νλμ νμ€ νΈμ°¨λ₯Ό λ°νν©λλ€. λ¨μΌ μΈμκ° νμν©λλ€. μμ±μ΄ μ«μκ° μλλ©΄ 0 κ°μ λ°νν©λλ€.
string()
ν¨μλ₯Ό μ¬μ©νμ¬ μ«μ, λΆμΈ, νν λλ λ°°μ΄ κ°μ λ¬Έμμ΄ κ°μΌλ‘ λ³νν©λλ€.
λ κ°μ μΈμκ° νμνλ©° νλλ μ ν μ¬νμ λλ€.
Attribute name(μμ± μ΄λ¦)
Precision: μλ κ²½μ° λΆλ μμμ μ«μ κ°μ λ³νν λ ν¬ν¨λλ μμ μλ¦Ώμμ λν μ νμ μ μ©ν©λλ€.
μ΄ μΏΌλ¦¬λ PageView κΈ°κ°μ μμμ μ΄ν λ μλ¦¬κ° ν¬ν¨λ λ¬Έμμ΄λ‘ λ°νν©λλ€.
FROM PageView SELECT string(duration, precision: 2)μ΄ μΏΌλ¦¬λ PageView κΈ°κ°μ νκ· μ μμμ μ΄ν λ μλ¦¬κ° ν¬ν¨λ λ¬Έμμ΄λ‘ λ°νν©λλ€.
FROM PageView SELECT string(average(duration), precision: 2)string()
μ μ¬μ©νμ¬ μμμ μ΄ν μλ¦Ώμλ₯Ό λ²λ¦¬μ§ μκ³ λΆλ μμμ κ°μΌλ‘ ν¨μ―ν©λλ€.FROM PageView SELECT count(*)FACET string(tuple(asnLatitude, asnLongitude), precision: 2)
substring()
ν¨μλ₯Ό μ¬μ©νμ¬ λ¬Έμμ΄μ μΌλΆλ₯Ό μΆμΆν©λλ€.
μΈμ:
str
- νμ λ¬Έμμ΄μ μΆμΆνλ λ¬Έμμ΄μ λλ€.- μ¬κΈ°μλ λ°μ΄νλ‘ λ¬ΆμΈ λ¦¬ν°λ΄ λ¬Έμμ΄, 쿼리λ λ¬Έμμ΄ μμ±, λ¬Έμμ΄μ λ°ννλ ν¨μ λλ λ¨μΌ λ¬Έμμ΄ κ°μ λ°ννλ νμ 쿼리 λ± λ¬Έμμ΄λ‘ νκ°λλ λͺ¨λ κ²μ΄ ν΄λΉλ μ μμ΅λλ€.
- μ΄ μΈμκ° nullλ‘ νκ°λλ©΄
substring()
ν¨μλ nullμ λ°νν©λλ€.
start
- μΆμΆμ μμν str λ΄μ μμΉμ λλ€.- strμ 첫 λ²μ§Έ λ¬Έμλ μμΉ 0μ λλ€.
- μμ κ°μ λ¬Έμμ΄μ λ§μ§λ§ λ¬Έμκ° μμΉ -1μΈ strμ λμ κΈ°μ€μΌλ‘ μμΉλ₯Ό μ°Ύμ΅λλ€.
- startκ° strμ κΈΈμ΄λ³΄λ€ ν¬κ±°λ κ°μΌλ©΄
substring()
ν¨μλ λΉ λ¬Έμμ΄μ λ°νν©λλ€. - startκ° μμμ΄κ³ μ λκ°μ΄ strμ κΈΈμ΄λ³΄λ€ ν¬λ©΄ μΆμΆλ νμ λ¬Έμμ΄μ μμΉ 0μμ μμλ©λλ€.
length
- strμμ μΆμΆν νμ λ¬Έμμ΄μ κΈΈμ΄ λλ λ¬Έμ μμ λλ€.- Optional - κΈΈμ΄κ° μ 곡λμ§ μμΌλ©΄ νμΈλ μμ μμΉ μ΄νμ strμμ λͺ¨λ λ¬Έμκ° ν¬ν¨λ©λλ€.
substring()
κ³Όposition()
μ ν¨κ» μ¬μ©νλ μλposition()
ν¨μλ₯Ό μ°Έμ‘°νμμμ€.
νμμ€ν¬νλ₯Ό νμμ΄ μ§μ λ λ μ§/μκ° λ¬Έμμ΄λ‘ λ³ννλ €λ©΄ toDatetime()
ν¨μλ₯Ό μ¬μ©ν©λλ€.
toDatetime()
λ λ€μ μΈμλ₯Ό μ¬μ©ν©λλ€.
timestamp
- λ μ§/μκ° λ¬Έμμ΄λ‘ λ³νν μ«μ νμμ€ν¬νμ λλ€. μ΄λ μ«μ κ°μ΄λ μμ±μΌ μ μμΌλ©° λ΄λΆμ μΌλ‘long
μΌλ‘ λ³νλ©λλ€.pattern
- κ²°κ³Ό νμμ μ§μ νλ λ° μ¬μ©λλ μ νμ λ μ§/μκ° ν¨ν΄μ λλ€. ν¨ν΄ λ¬Έμμ΄μ ꡬμ±νλ λ°©λ²μ DatetimeFormatter λ¬Έμμ 'νμν λ° κ΅¬λ¬Έ λΆμμ μν ν¨ν΄' μΉμ μ μ°Έμ‘°νμμμ€.- μ΄λ μμ λ¬Έμμ΄ κ°μ΄μ΄μΌ νλ©° ν¨ν΄μ΄ μ 곡λμ§ μμΌλ©΄ κΈ°λ³Έκ°μ
yyyy-MM-dd'T'HH:mm:ss.SSSXXX
μ λλ€.
- μ΄λ μμ λ¬Έμμ΄ κ°μ΄μ΄μΌ νλ©° ν¨ν΄μ΄ μ 곡λμ§ μμΌλ©΄ κΈ°λ³Έκ°μ
timezone
- λ μ§/μκ° λ¬Έμμ΄(μ: UTC)λ₯Ό ν΄μνλ λ° μ¬μ©λλ μκ°λκ°μΌλ‘ μ ν μ¬νμ λλ€. (μ: UTC)- μμ λ¬Έμμ΄ κ°μ΄μ΄μΌ νλ©° κΈ°λ³Έκ°μ UTCμ΄κ±°λ κ°λ₯ν κ²½μ°
WITH TIMEZONE
μ μ 곡λ κ°μ λλ€.
μ λ ₯μ΄ μ ν¨ν μ«μμ΄λ©΄
toDatetime()
ν¨μλ νμ κ°μ λ°νν©λλ€.Alias:
fromTimestamp()
toDatetime()
ν¨μμ λ체 μ΄λ¦μ λλ€.μ:
λ€μ 쿼리λ
yyyy-MM-dd'T'HH:mm:ss.SSSXXX
μ κΈ°λ³Έ ν¨ν΄μ μ¬μ©νμ¬timestampValue
μμ±μ λ³νν©λλ€. κ·Έλ¬λ©΄ λ μ§/μκ° λ¬Έμμ΄1970-01-01T00:20:34.567Z
μ΄ λ°νλ©λλ€.WITH 1234567 AS timestampValue SELECT toDatetime(timestampValue)λ€μ 쿼리λ μκ°λκ° 'America/Los_Angeles'λ‘ μ€μ λ ν¨ν΄ λ¬Έμμ΄
yyyy-MM-dd
μ μ¬μ©νμ¬timestampValue
μμ±μ λ³νν©λλ€. κ·Έλ¬λ©΄ λ μ§/μκ° λ¬Έμμ΄1969-12-31
μ΄ λ°νλ©λλ€.WITH 1234567 AS timestampValue SELECT toDatetime(timestampValue, 'yyyy-MM-dd', timezone:'America/Los_Angeles')λ€μ 쿼리λ
WITH TIMEZONE
μ μ μ 곡λ μκ°λλ₯Ό μ¬μ©νμ¬timestampValue
μμ±μ λ³νν©λλ€. κ·Έλ¬λ©΄ λ μ§/μκ° λ¬Έμμ΄1969-12-31
μ΄ λ°νλ©λλ€.WITH 1234567 AS timestampValue SELECT toDatetime(timestampValue, 'yyyy-MM-dd') FROM Event WITH TIMEZONE 'America/Los_Angeles'- μμ λ¬Έμμ΄ κ°μ΄μ΄μΌ νλ©° κΈ°λ³Έκ°μ UTCμ΄κ±°λ κ°λ₯ν κ²½μ°
λ μ§/μκ° λ¬Έμμ΄μμ μν¬ν¬ λ°λ¦¬μ΄ λ¨μμ νμμ€ν¬νλ₯Ό ꡬ문 λΆμνλ €λ©΄ toTimestamp()
ν¨μλ₯Ό μ¬μ©ν©λλ€.
toTimestamp()
λ λ€μ μΈμλ₯Ό μ¬μ©ν©λλ€.
datestring
- νμμ€ν¬νλ‘ λ³νν λ μ§/μκ° λ¬Έμμ΄μ λλ€. (μν¬ν¬ λ°λ¦¬μ΄) λ¬Έμμ΄ μμ±μ΄κ±°λ λ°μ΄νλ‘ λ¬ΆμΈ λ¬Έμμ΄ λ¦¬ν°λ΄μΌ μ μμ΅λλ€.pattern
- λ μ§ λ¬Έμμ΄μ ꡬ문 λΆμνλ λ° μ¬μ©λλ μ νμ λ μ§/μκ° ν¨ν΄μ λλ€. ν¨ν΄ λ¬Έμμ΄μ ꡬμ±νλ λ°©λ²μ DatetimeFormatter λ¬Έμμ 'νμν λ° κ΅¬λ¬Έ λΆμμ μν ν¨ν΄' μΉμ μ μ°Έμ‘°νμμμ€.- μμ λ¬Έμμ΄ κ°μ΄μ΄μΌ νλ©° ν¨ν΄μ΄ μ 곡λμ§ μμΌλ©΄ κΈ°λ³Έκ°μ
yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
μ λλ€.
- μμ λ¬Έμμ΄ κ°μ΄μ΄μΌ νλ©° ν¨ν΄μ΄ μ 곡λμ§ μμΌλ©΄ κΈ°λ³Έκ°μ
timezone
- λ μ§ λ¬Έμμ΄ λ§€κ°λ³μλ₯Ό ν΄μνλ λ° μ¬μ©λλ μ νμ μκ°λ κ°μ λλ€. (μ: ννμ νμ€μ)- μμ λ¬Έμμ΄ κ°μ΄μ΄μΌ νλ©° κΈ°λ³Έκ°μ UTCμ΄κ±°λ κ°λ₯ν κ²½μ°
WITH TIMEZONE
μ μ 곡λ κ°μ λλ€.
Alias:
fromDatetime()
toTimestamp()
ν¨μμ λ체 μ΄λ¦μ λλ€.ν
λ°κ²¬λ λ¬Έμμ΄μ΄ μ£Όμ΄μ§ ν¨ν΄κ³Ό μΌμΉνμ§ μμΌλ©΄
null
μ λ°νν©λλ€. λ€μν ν¨ν΄μ λ μ§/μκ° λ¬Έμμ΄μ΄ μλ κ²½μ°OR
μ μ¬μ©νμ¬ κ° μ€ νλκ° nullμ΄ μλ λκΉμ§ μΊμ€μΌμ΄λ λ°©μμΌλ‘ κ²°κ³Όλ₯Ό ν΅ν©ν μ μμ΅λλ€. μ ν μ¬νμΈ ν¨ν΄ μΈκ·Έλ¨ΌνΈλ₯Ό μ¬μ©ν μλ μμ΅λλ€. κΈ°λ³Έ ν¨ν΄μ λκ΄νΈλ₯Ό μ¬μ©νμ¬ λ°λ¦¬μ΄ λ° μμ μ€νμ λΆλΆμ μ ν μ¬νμΌλ‘ λ§λλλ€.μλ리μ€
μΈλΆ μ¬ν
μν ν¨ν΄
μν λ μ§/μκ°
μλλ‘ ν΄κ²°
μκ°λκ° λλ½λμμ΅λλ€.
μκ°λ μΈμ λλ
WITH TIMEZONE
κ°μ μ¬μ©ν©λλ€. κΈ°λ³Έκ°μUTC
μ λλ€.yyyy-MM-dd HH:mm:ss.SSS
2023-10-18 15:27:03.123
2023-10-18T15:27:03.123Z
λ μ§/μκ° νλκ° λλ½λμμ΅λλ€.
λλ½λ μκ° νλλ 0μΌλ‘ λ체λ©λλ€. λλ½λ λ μ§ νλλ 1λ‘ λ체λ©λλ€. νλκ° μλ κ²½μ° μ°μ μμκ° λ λμ νλλ λͺ¨λ μμ΄μΌ ν©λλ€.
μ°Έκ³ : μ°λλ³ λ μ§ λ° λΆκΈ° ν¨ν΄μ΄ μ§μλ©λλ€.yyyy-MM-dd HH:mm:ss
2023-10-18 15:27:03
2023-10-18T15:27:03.000Z
yyyy-MM-dd HH:mm
2023-10-18 15:27
2023-10-18T15:27:00.000Z
yyyy-MM-dd HH
2023-10-18 15
2023-10-18T15:00:00.000Z
yyyy-MM-dd
2023-10-18
2023-10-18T00:00:00.000Z
yyyy 'day' D
2023 day 291
2023-10-18T00:00:00.000Z
yyyy-MM
2023-10
2023-10-01T00:00:00.000Z
yyyyqqq
2023 Q4
2023-10-01T00:00:00.000Z
yyyy
2023
2023-01-01T00:00:00.000Z
Time only
λ μ§ μμ΄ μκ° ν¨ν΄μ μ¬μ©νλ κ²½μ° Unix νμμ€ν¬ν(λ°λ¦¬μ΄)κ° κ³μ°λ©λλ€.
μ°Έκ³ : μκ°λ μ‘°μ μ μ¬μ ν μ μ©λ©λλ€.HH:mm
00:30
1971-01-01T00:30:00.000Z
HH:mm O
00:30 GMT-1
1971-01-01T01:30:00.000Z
HH:mm O
00:30 GMT+1
1969-12-31T23:30:00.000Z
12 hour time
12μκ° ν¨ν΄(μλ¬Έμ h)μ μ¬μ©νλ κ²½μ° μ€μ -μ€ν ν¨ν΄(a)λ μ¬μ©ν΄μΌ ν©λλ€.
μ°Έκ³ : λ μ§/μκ° λ¬Έμμ΄ λ΄μμλ AM/PMμ΄ λλ¬Έμμ¬μΌ ν©λλ€.yyyy-MM-dd h:mm a
2023-10-18 3:27 PM
2023-10-18T15:27:00.000Z
yyyy-MM-dd h:mm
2023-10-18 3:27
μ§μλμ§ μλ ν¨ν΄
yyyy-MM-dd h:mm a
2023-10-18 3:27 pm
null(μλ¬Έμ pmμΌλ‘ μΈν΄)
Field precedence
If a field is present, all higher precedence fields must also be present.
yyyy dd
2023 18
μ§μλμ§ μλ ν¨ν΄(ddλ λ μ§μ΄κ³ μμ λλ½λ¨)
μ:
λ€μ 쿼리λ
yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
μ κΈ°λ³Έ ν¨ν΄μ μ¬μ©νμ¬ λ μ§/μκ° λ¬Έμμ΄ '2023-10-18T15:27:03.123Z'λ₯Ό ꡬ문 λΆμν©λλ€. μ΄λ νμμ€ν¬ν κ°1697642823123
μ λ°νν©λλ€.SELECT toTimestamp('2023-10-18T15:27:03.123Z')FROM Eventλ€μ 쿼리λ μκ°λκ° 'America/Los_Angeles'λ‘ μ€μ λ λ μ§/μκ° λ¬Έμμ΄ '2023-11-03 11:00:32'λ₯Ό ꡬ문 λΆμν©λλ€. μ΄λ νμμ€ν¬ν κ°
1699034432000
μ λ°νν©λλ€.SELECT toTimestamp('2023-11-03 11:00:32', 'yyyy-MM-dd HH:mm:ss', timezone:'America/Los_Angeles')FROM Eventλ€μ 쿼리λ
WITH TIMEZONE
μ μ μ 곡λ μκ°λλ₯Ό μ¬μ©νμ¬ λ μ§/μκ° λ¬Έμμ΄ '2023-11-03 11:00:32'λ₯Ό ꡬ문 λΆμν©λλ€. μ΄λ νμμ€ν¬ν κ°1699034432000
μ λ°νν©λλ€.SELECT toTimestamp('2023-11-03 11:00:32', 'yyyy-MM-dd HH:mm:ss')FROM Event WITH TIMEZONE 'America/Los_Angeles'μ€μ
UIλ μλμΌλ‘
toTimestamp()
κ°μ νμμ€ν¬νλ‘ κ°μ§νκ³ λ μ§/μκ° κ°μΌλ‘ νμμ μ§μ ν©λλ€. μ€μ μ«μ νμμ€ν¬νλ₯Ό νμνλ €λ©΄toTimestamp()
ν¨μλ₯Όstring()
ν¨μλ‘ λνν©λλ€.- μμ λ¬Έμμ΄ κ°μ΄μ΄μΌ νλ©° κΈ°λ³Έκ°μ UTCμ΄κ±°λ κ°λ₯ν κ²½μ°
upper()
ν¨μλ₯Ό μ¬μ©νμ¬ λ¬Έμμ΄ κ°μ λͺ¨λ μνλ²³ λ¬Έμλ₯Ό λλ¬Έμλ‘ λ³κ²½ν©λλ€.
μΈμ:
str
- λλ¬Έμλ‘ λ³νν λ¬Έμμ΄ κ°μ λλ€.μ¬κΈ°μλ λ°μ΄νλ‘ λ¬ΆμΈ λ¦¬ν°λ΄ λ¬Έμμ΄, 쿼리λ λ¬Έμμ΄ μμ±, λ¬Έμμ΄μ λ°ννλ ν¨μ λλ λ¨μΌ λ¬Έμμ΄ κ°μ λ°ννλ νμ 쿼리 λ± λ¬Έμμ΄λ‘ νκ°λλ λͺ¨λ κ²μ΄ ν΄λΉλ μ μμ΅λλ€.
μ΄ μΈμκ° nullλ‘ νκ°λλ©΄
upper()
ν¨μλ nullμ λ°νν©λλ€.μ΄ μΏΌλ¦¬λ 쿼리μ λ€μν λΆλΆμμ
upper()
ν¨μλ₯Ό μ¬μ©νλ λ°©λ²μ 보μ¬μ€λλ€.FROM PageActionSELECT latest(upper(actionName))WHERE upper(actionName) = upper('acmePageRenderedEvent') OR upper(actionName) = upper('SubmitLogin')FACET concat(actionName, ':', upper(actionName))upper(str)
μκ΄λ ¨ ν¨μ:
lower()
μ ν λ³ν
NRQLμ "κ°μ "λ₯Ό μ§μνμ§ μμ΅λλ€. μ¦, λ¬Έμμ΄λ‘ μ μ₯λ λΆλ μμμ μ λ¬Έμμ΄λ‘ μ·¨κΈλλ©° λΆλ μμμ κ°μ κΈ°λνλ ν¨μμμ μλν μ μμ΅λλ€.
λ€μ ν¨μλ₯Ό μ¬μ©νμ¬ μ«μ κ°μ΄ μλ λ¬Έμμ΄ λλ λ¬Έμμ΄ κ°μ΄ μλ λΆμΈμ ν΄λΉ μ«μ λ° λΆμΈ κ°μΌλ‘ λ³ννκ±°λ λ¬Έμμ΄μ΄ μλ κ°μ λ¬Έμμ΄ κ°μΌλ‘ λ³νν μ μμ΅λλ€.
numeric()
ν¨μλ₯Ό μ¬μ©νμ¬ λ¬Έμμ΄ νμμ μ«μλ₯Ό μ«μ κ°μΌλ‘ λ³νν©λλ€. μ΄ ν¨μλ 쿼리 κ²°κ³Όμ μν ν¨μλ₯Ό μ¬μ©νκ±°λaverage()
κ°μ NRQL μ§κ³μ ν¨μλ₯Ό μ¬μ©νλ 쿼리μ λ΄μ₯λ μ μμ΅λλ€. NRQL κ°μ΄ κ²μ΄μ§ νμμΈ κ²½μ°numeric()
μ μλνμ§ μμ΅λλ€. κ·Έ λμ , νΈν κ°λ₯ν λ€μ 쿼리 ν¨μ μ€ νλλ₯Ό μ¬μ©ν΄μΌ ν©λλ€.latest()
min()
max()
sum()
count()
average()
boolean()
ν¨μλ₯Ό μ¬μ©νμ¬"true"
λλ"false"
μ λ¬Έμμ΄ κ°μ ν΄λΉ λΆμΈ κ°μΌλ‘ λ³νν©λλ€.string()
ν¨μλ₯Ό μ¬μ©νμ¬ μ«μ, λΆμΈ, νν λλ λ°°μ΄ κ°μ λ¬Έμμ΄ κ°μΌλ‘ λ³νν©λλ€. λ³΄λ€ μμΈν λ΄μ©μstring()
μλ¨μ μ€λͺ μ μ°Έμ‘°νμμμ€.
μ½λ©νΈ
NRQL 쿼리λ₯Ό μμ±ν λ ν ꡬμ±μμ΄ μΏΌλ¦¬λ₯Ό λ μ μ΄ν΄νκ³ μ¬μ©νλ λ° λμμ΄ λ μ μλλ‘ μ£Όμμ μΆκ°ν μ μμ΅λλ€.
ꡬ문 μΈλΆ μ 보λ λ€μκ³Ό κ°μ΅λλ€.
--
λ κ°μ λμλ κ°μ μ€μμ μ΄ νμκΈ° μ€λ₯Έμͺ½μ μλ λͺ¨λ ν μ€νΈλ₯Ό μ£Όμ μ²λ¦¬ν©λλ€.//
λ κ°μ μ¬λμλ κ°μ μ€μμ μ΄ νμκΈ° μ€λ₯Έμͺ½μ μλ λͺ¨λ ν μ€νΈλ₯Ό μ£Όμ μ²λ¦¬ν©λλ€./* */
μ΄ λ¬Έμ μ§ν© μ¬μ΄μ μλ λͺ¨λ ν μ€νΈλ μ£Όμ μ²λ¦¬λ©λλ€. μ΄ νμκΈ°λ μ¬λ¬ μ€μ μ μ©λ μ μμ΅λλ€.
μ£Όμμ΄ λͺ¨λ κ³³μ νμλλ κ²μ μλλΌλ λ° μ£Όμνμμμ€. 'μ΅κ·Ό 쿼리' λ° '쿼리 보기' κ°μ μΌλΆ λ·°μλ μ£Όμμ΄ νμλμ§ μμ΅λλ€.
μ£Όμμ ν¬ν¨νλ λͺ κ°μ§ 쿼리μ μ:
FROM Transaction SELECT uniqueCount(appId) -- This will return the number of unique App IDs
FROM TransactionErrorSELECT count(*) SINCE 1 day ago // Transaction Error for the past day
FROM TransactionTrace /* This data may be incomplete;If so, run a query of Transaction */SELECT count(*)
κ΄λ ¨ λ¬Έμ
NRQL ꡬ문 λ° κ·μΉμ λν μ 보λ₯Ό μ 곡νλ λ€λ₯Έ μλ£λ€μ νμΈν΄ 보μμμ€.