Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale, Microsoft Fabric sorgularında grafikte bulunan GQL ifadeleri, önkoşulları ve yerleşik işlevleri için kapsamlı bir başvuru sağlar. Graf sorgularınızda hesaplamaları gerçekleştirmeyi, sonuçları filtrelemeyi ve verileri dönüştürmeyi anlamak için bu başvuruyı kullanın.
GQL sorgu diline ve uçtan uca sorgu örneklerine genel bakış için bkz. GQL dil kılavuzu. Desteklenen veri türleri ve değişmez söz dizimi hakkında bilgi için bkz. GQL değerleri ve değer türleri.
Literals
Değişmez değerler, doğrudan belirtilen değeri değerlendiren basit ifadelerdir. GQL değerleri ve değer türleri makalesinde her değer türünün değişmez değerleri ayrıntılı olarak açıklanmaktadır.
Example:
1
1.0d
1.00m
TRUE
"Hello, graph!"
[ 1, 2, 3 ]
NULL
Her veri türü için ayrıntılı değişmez değer söz dizimi için bkz. GQL değerleri ve değer türleri.
Predicates
Koşul, GQL sorgularındaki sonuçları filtrelemek için sık kullandığınız boole ifadeleridir. , TRUEveya FALSE (null) olarak değerlendirilirUNKNOWN.
Dikkat
Koşulları filtre olarak kullandığınızda, bunlar yalnızca koşulun değerlendirildiği TRUEöğeleri korur.
Karşılaştırma önkoşulları
Değerleri karşılaştırmak için şu işleçleri kullanın:
-
=(eşittir) -
<>(eşit değil) -
<'dan küçük -
>(>) -
<=(küçük veya eşit) -
>=(büyüktür veya eşittir)
GQL üç değerli mantık kullanır ve burada null dönüş UNKNOWNile karşılaştırmalar yapılır:
| Expression | Result |
|---|---|
5 = 5 |
TRUE |
5 = 3 |
FALSE |
5 = NULL |
UNKNOWN |
NULL = NULL |
UNKNOWN |
Belirli bir karşılaştırma davranışı için GQL değerleri ve değer türlerindeki her değer türünün belgelerine bakın.
Example:
MATCH (p:Person)
FILTER WHERE p.birthday <= 20050915
RETURN p.firstName
Eğer her iki operand da sayıysa, GQL onları sayısal değerleriyle karşılaştırır.
Important
Graph henüz GQL'nin tanımladığı tüm sayısal karşılaştırmaları desteklemiyor. Mevcut davranış şu kuralları kullanır:
- Tam sayı ile yaklaşık sayı arasındaki karşılaştırma, tam sayı yaklaşık bir sayısal tipe dönüştürülür.
- İşareli ve işaretsiz tam sayı değerleri karşılaştırması genellikle her iki değeri de işaretli tam sayı türüne dönüştürür. İmzalı tam sayı aralığı dışında işaretlenmemiş bir değer hata oluşturur.
Mantıksal ifadeler
Koşulları mantıksal işleçlerle birleştirin:
-
AND(her iki koşul da doğru) -
OR(iki koşuldan biri true) -
NOT(koşulu olumsuzlar) -
XOR(özel ayrım — tam olarak bir işlenen doğru olduğunda true)
Example:
MATCH (p:Person)
FILTER WHERE p.birthday <= 20050915 AND p.firstName = 'John'
RETURN p.firstName || ' ' || p.lastName AS fullName
Özellik varlığı önkoşulları
Özelliklerin mevcut olup olmadığını denetlemek için şu koşulları kullanın:
p.locationIP IS NOT NULL
p.browserUsed IS NULL
Uyarı
Bilinen olmayan bir mülke erişmeye çalışmak sözdizimi hatasına yol açar.
Potansiyel olarak var olmayan bir mülke erişim olarak değerlendirilir null.
Bir özelliğin bilinip bilinmediğinin veya mevcut olmayabileceklerinin belirlenmesi, erişilen düğümün veya kenarın türüne bağlıdır.
Varoluş alt sorguları
İçiçe bir sorgu en az bir satır döndürüp vermediğini test etmek için prosedür formu EXISTS alt sorgu kullanın:
EXISTS {
<query statements>
RETURN <columns>
}
Sonuç olarak sıfır olmayan bir Boolean değeri ortaya çıkar:
-
TRUEeğer alt sorgu bir veya daha fazla satır dönerse. -
FALSEeğer alt sorgu satır döndürmezse.
Zaten kapsamda olan değişkenler, alt sorgu içinde örtük olarak erişilebilirdir. Yalnızca alt sorgu içinde eklenen değişkenler dışarıda erişilebilir değildir.
Filtrede kullanım EXISTS :
MATCH (p:Person)
WHERE EXISTS {
MATCH (p)-[:knows]->(friend:Person)
RETURN friend
}
RETURN p.firstName, p.lastName
Alt sorgu satır döndürmediği satır tutmak için kullanılır NOT EXISTS . Ayrıca EXISTS , LETRETURN, ORDER BY, ve filtre veya kaynak ifadelerini birleştirebilirsiniz.
EXISTS List predicate filtresi içinde desteklenmez.
Important
Sadece grafik desenine dayalı formlar ( EXISTS { (p)-[:knows]->(friend) } örneğin ve EXISTS ((p)-[:knows]->(friend)) desteklenmez). Önceki örneklerde gösterilen prosedür formunu kullanın. Skaler VALUE { ... } alt sorgular desteklenmiyor.
Dikkat
EXISTS alt sorgu bir satır döndürüp döndürmediğini test eder, toplam değerin sıfır olmayıp olmadığını değil. Gruplanmamış bir toplam, örneğin RETURN count(*) satır bulmasa bile bir satır MATCH döndürür, bu nedenle bu formu EXISTS 'yi değerlendirir.TRUE Eşleşmelerin var olup olmadığını test etmek istediğinizde eşleştirilmiş bir değişkeni döndürün.
Bağlantılı alt sorgular hakkında daha fazla bilgi için GQL dil rehberindeki ifadeyeCALL bakınız.
Üyelik koşullarını listeleme
Değerlerin listelerde olup olmadığını test edin:
p.firstName IN ['Alice', 'Bob', 'Charlie']
p.gender NOT IN ['male', 'female']
List predicate fonksiyonları
Bir liste önlem fonksiyonu kullanarak bir listenin elemanları için bir Boolean ifadesini değerlendirin:
ALL(element IN list WHERE predicate)
ANY(element IN list WHERE predicate)
NONE(element IN list WHERE predicate)
SINGLE(element IN list WHERE predicate)
Kaynak, bir liste literal, liste değerli bir özellik, değişken veya değişken uzunluklu bir desenden bir grup listesi olabilir.
Fonksiyonların şu anlamları vardır:
| Function | Meaning |
|---|---|
ALL |
Her eleman önlemi tatmin eder. |
ANY |
En az bir eleman bu yüklemi tatmin eder. |
NONE |
Hiçbir eleman bu yüklemi tatmin etmez. |
SINGLE |
Tam olarak bir eleman bu yüklemi tatmin eder. |
Aşağıdaki örnek, dinamik olarak oluşturulmuş bir liste üzerinde dört fonksiyonun tamamını değerlendirir:
LET items = [1, 2, 3]
RETURN ALL(x IN items WHERE x > 0) AS all_match,
ANY(x IN items WHERE x = 2) AS any_match,
NONE(x IN items WHERE x < 0) AS none_match,
SINGLE(x IN items WHERE x = 2) AS single_match
Dört döndürülmüş değerin tamamı 'dir.TRUE
Ayrıca bir listedeki elemanların özelliklerini de değerlendirebilirsiniz. Bu örnekte, connections değişken uzunluklu kenar deseni tarafından oluşturulan grup listesi şöyledir:
MATCH (person:Person)-[connections:knows]->{1,4}(friend:Person)
WHERE ALL(connection IN connections WHERE connection.creationDate IS NOT NULL)
RETURN person.firstName, friend.firstName
Liste predikatları üç değerli mantık kullanır. Tablo, sonucu liste öğeleri için filtre ifadesi tarafından üretilen değerler açısından tanımlar:
| Function | TRUE |
FALSE |
UNKNOWN |
Boş liste |
|---|---|---|---|---|
ALL |
Her filtre sonucu .TRUE |
En az bir sonuç .FALSE |
Hiçbir sonuç değildir FALSEve en az biri UNKNOWN. |
TRUE |
ANY |
En az bir filtre sonucu .TRUE |
Hiçbir sonuç ya UNKNOWNda değildirTRUE. |
Hiçbir sonuç değildir TRUEve en az biri UNKNOWN. |
FALSE |
NONE |
Hiçbir sonuç ya UNKNOWNda değildirTRUE. |
En az bir sonuç .TRUE |
Hiçbir sonuç değildir TRUEve en az biri UNKNOWN. |
TRUE |
SINGLE |
Tam olarak bir sonuç TRUE, hiçbiri değildir UNKNOWN. |
Birden fazla sonuç TRUE, ya da hiçbir sonuç ya TRUE da UNKNOWNdeğildir. |
En fazla bir sonuç TRUE, en az biri UNKNOWNise . |
FALSE |
Eğer kaynak listesi null ise, her fonksiyon döndürür UNKNOWN. Bir null liste elemanı, filtrenin null'a bağlı olduğu filtreyi değerlendirme sonucuna katkıda bulunur; bu fonksiyon sonucunu otomatik olarak bilinmez.
Eleman değişkeni yalnızca liste önleminin filtre ifadesi içinde mevcuttur. Filtre ayrıca çevreleyen sorgudan gelen değişkenlere referans verebilir. Eleman değişkeni dış değişkenle aynı isme sahipse, yerel eleman değişkeni önceliklidir. İç içe liste önlemleri de benzer şekilde dış eleman değişkenini gölgeleyebilir.
Toplu fonksiyonlar, çevreleyen bir grup listesine referans verebilir, ancak yerel olarak bağlı eleman değişkenini toplayamıyorlar.
EXISTS Alt sorgular ayrıca bir liste predicate filtresi içinde desteklenmez.
ANY(...) bir liste predikatı fonksiyonudur. Bunu yol arama öneki veya ANY dinamik değer tipiyle karıştırmayınANY SHORTEST.
Dize deseni önkoşulları
Desen eşleştirme tekniklerini kullanarak dizeleri eşleştirin:
p.firstName CONTAINS 'John'
p.browserUsed STARTS WITH 'Chrome'
p.locationIP ENDS WITH '.1'
RE2 düzenli ifade eşleştirmesi MSFT.REGEXP_LIKEiçin .
Aritmetik ifadeler
Sayısal değerlerle standart aritmetik işleçler kullanın:
-
+(toplama) -
-(çıkarma) -
*(çarpma) -
/(bölme)
Aritmetik işleçler genel matematiksel kuralları izler.
Öncelik:
Genellikle, işleçler önceden *olduğu gibi + yerleşik işleç öncelik kurallarını izler. Değerlendirme sırasını gerektiği gibi denetlemek için parantezleri kullanın.
Example:
(p.birthday < 20050915 OR p.birthday > 19651231) AND p.gender = 'male'
Zorlama kuralları:
Öncelik sırasına göre aşağıdaki kuralları kullanın:
- Yaklaşık sayısal tip içeren aritmetik ifadeler ise yaklaşık sayısal bir tip döndürür.
- Hem imzalı hem de işaretsiz tamsayı türlerini içeren aritmetik ifadeler, işaretli tamsayı tipi döndürür.
Özellik erişimi
Nokta gösterimini kullanarak özelliklere erişin:
p.firstName
edge.creationDate
Liste erişimi
Sıfır tabanlı dizin oluşturma kullanarak liste öğelerine erişin:
interests[0] -- first element
interests[1] -- second element
Yerleşik işlevler
GQL, veri işleme ve analiz için çeşitli yerleşik işlevleri destekler.
Sayısal işlevler
Sayısal değerleri dönüştürmek, trigonometrik değerleri hesaplamak ve tam sayı aralıkları oluşturmak için sayısal fonksiyonlar kullanın.
Mutlak değer ve güç
| Function | Description |
|---|---|
ABS(value) |
Mutlak değeri döndürür. Sonuç aynı sayısal tipe sahiptir value. |
POWER(base, exponent) |
Yükselir baseexponent ve geri getirir.DOUBLE |
Her iki fonksiyon da sayısal değerleri kabul eder. Null argümanı null üretir. Geçersiz bir sayısal işlem, örneğin taşan POWER bir sonuç, hata oluşturur.
RETURN ABS(-1) AS absoluteValue, POWER(2, -2) AS reciprocalSquare
Sonuç:
| absoluteValue | karşılıklıKare |
|---|---|
1 |
0.25 |
Trigonometrik işlevler
Trigonometrik fonksiyonlar bir sayısal değeri kabul eder ve bir DOUBLE'a döndürür.
Null argümanı null üretir.
| Function | Description |
|---|---|
SIN(value), COS(value), TAN(value), COT(value) |
Trigonometrik bir fonksiyon hesaplayın.
value radyen cinsinden bir açıdır. |
ASIN(value), ACOS(value), ATAN(value) |
Ters trigonometrik bir fonksiyon hesaplayın. Sonuç radyanlarda.
ASINve ACOS 'den bir 1değer gerektirir-1. |
SINH(value), COSH(value), TANH(value) |
Hiperbolik bir fonksiyon hesaplayın. |
DEGREES(value) |
Bir açıyı radyandan dereceye dönüştürür. |
RADIANS(value) |
Bir açıyı dereceden radyana dönüştürür. |
Bir fonksiyonun matematiksel alanı dışındaki bir argüman hata üretir.
RETURN COS(0) AS cosine, RADIANS(180) AS angle
Sonuç:
| kosinüs | açı |
|---|---|
1.0 |
3.141592653589793238462643383279502884 |
Tam sayı aralıkları
RANGE(start, end)Bir adım kullanarak 1tam sayılar listesini döndürür.startend
RANGE(start, end, step) belirtilen sıfır olmayan adımı kullanır.
start, end, ve step sıfır olmayan tam sayılar olmalıdır. Sıfır veya startendiçin geçerlidir; sadece step sıfır olmayan olmalıdır.
Aralık şunları içerir start. Sadece tekrar tam olarak erişim end eklerinde step dahil olurend. Büyük olan pozitif start adım veya daha az endolan negatif start adım boş bir liste döndürür.end Sıfır adım hata üretir.
RETURN RANGE(0, 10, 3) AS ascending, RANGE(5, 0, -2) AS descending
Sonuç:
| yükselen | azalan |
|---|---|
[0, 3, 6, 9] |
[5, 3, 1] |
Eğer tüm argümanlar işaretsiz tam sayılarsa, RANGE bir LIST<UINT64>.
Aksi takdirde, a LIST<INT64> döndürür ve güvenli şekilde imzalı tam sayı olarak temsil edilemeyen değerleri reddeder.
Toplama işlevleri
Toplu fonksiyonlar, değerleri giriş satırları arasında veya değişken uzunluklu bir desenle sınırlanmış bir grup listesi içinde birleştirir.
| Function | Description |
|---|---|
COUNT(*) |
Giriş satırlarını sayar, sıfır değerler içeren satırlar da dahil. |
COUNT(expression) |
Sıfır olmayan sonuçları sayar expression. |
SUM(expression) |
Sıfır olmayan sayısal değerlerin toplamını döndürür. |
AVG(expression) |
Sıfır olmayan sayısal değerlerin ortalamasını döndürür. |
MIN(expression) |
Minimum sıfır olmayan değeri döndürür. |
MAX(expression) |
Maksimum sıfır olmayan değeri döndürür. |
COLLECT_LIST(expression) |
Her girdi için bir eleman içeren bir liste döner, null öğeler dahil. |
COLLECT_ONE(expression) |
Bir sıfır olmayan giriş değeri döndürür. Seçilen değer deterministik değildir. |
COLLECT_ELEMENTS(expression) |
Liste değerli girdilerin elemanlarını tek bir listeye birleştirir. Null giriş listeleri eleman eklemez, ancak bir liste içindeki null elemanlar sonuçta kalır. |
Bir toplu sorguda gruplama sütunları yoksa ve giriş satır almıyorsa, COUNT , COLLECT_LIST döndürür 0ve COLLECT_ELEMENTS boş bir liste döndürür, diğer aggregate fonksiyonlar ise null döndürür. Bir koleksiyon toplamının döndürülen değer sırasına güvenmeyin. Sütunları gruplarken, hiçbir giriş satırı grup oluşturmaz ve dolayısıyla sonuç satırı olmaz.
Küme niceleyicileri
Tekrarlayan değerleri eklemek veya DISTINCT kaldırmak için kullanılırALL.
ALL ifade agregaları için varsayılan olarak kullanılır.
COUNT(*) belirli bir niceleyiciyi kabul etmez.
MATCH (person:Person)
RETURN COUNT(person) AS personCount,
COUNT(DISTINCT person.browserUsed) AS browserCount
için COLLECT_LIST, DISTINCT çoğaltılmış değerleri kaldırır ve en fazla bir null tutar. İçinde COLLECT_ELEMENTS, DISTINCT giriş listeleri birleştirildikten sonra elemanlar için geçerlidir.
DISTINCT deterministik yapmaz COLLECT_ONE .
Agregata özgü filtreler ve sınırlar
Bir agrega doğru olan değerleri predicate dahil etmek için bir agrega ekleyinFILTER (WHERE predicate). Yanlış ve bilinmeyen önlem sonuçları hariç tutulur.
Bu filtre yalnızca o agregatı etkiler, aynı RETURNiçindeki diğer ifadelere erişilebilen giriş satırlarını değil.
En fazla n nitelikli giriş satırlarını dikkate almak için toplam filtrenin içine ekleyinLIMIT n. Filtreleme toplam-spesifik sınırdan önce yapılır ve DISTINCT limitten sonra uygulanır.
MATCH (person:Person)
RETURN COUNT(*) AS allPeople,
COUNT(*) FILTER (WHERE person.birthday < 19900101 LIMIT 5) AS sampleBornBefore1990
Satırlar arasında toplama
Bir agrega genellikle değerleri giriş satırları boyunca dikey olarak birleştirir. Her grup için bir sonuç hesaplamak için kullanın GROUP BY .
MATCH (p:Person)
RETURN count(*) AS total_people, avg(p.birthday) AS average_birth_year
MATCH (p:Person)-[:isLocatedIn]->(c:City)
RETURN c.id AS cityId, c.name, count(*) AS population, avg(p.birthday) AS average_birth_year
GROUP BY cityId, c.name
Bir dikey agregayı aynı sorgu bloğunda diğerinin içine doğrudan yerleştirmeyin. Örneğin, SUM(COUNT(*)) geçersizdir. Toplu sonucu toplamanız gerektiğinde toplama adımlarını ayırmak için kullanın NEXT .
Eşleştirilmiş bir yol içinde toplama
Değişken uzunluklu bir desenle sınırlanan bir kenar değişkeni, bir grup listesi olur. Bu değişken üzerindeki bir toplam yataydır: her eşleşen yol için listede bir sonuç hesaplar, farklı giriş satırlarını birleştirmek yerine.
MATCH (person:Person)-[knows:knows]->{1,5}(friend:Person)
RETURN COUNT(knows) AS pathLength
Burada, COUNT(knows) eşleşen her yoldaki kenar sayısını döndürür. , SUM, AVG, MIN, COLLECT_ONEMAXCOLLECT_LISTve COLLECT_ELEMENTS yatay formları COUNTdesteklenir.
COUNT(*) ve agrega özgü FILTER ya da LIMIT yatay formlar değildir.
Yatay, bir dış dikey agrega girdi olabilir:
MATCH (person:Person)-[knows:knows]->{1,5}(friend:Person)
RETURN MIN(COUNT(knows)) AS shortestMatchedPath
Bu sorguda, COUNT(knows) eşleştirilen yol için bir uzunluk hesaplanır ve MIN bu uzunlukları giriş satırları arasında birleştirir.
Görev odaklı örnekler için bkz. Grafik verilerini filtrele ve topla.
Koşullu ifadeler
Basit CASE bir ifade kullanarak bir ifadeyi bir veya daha fazla değerle karşılaştırın ve ilk eşit değerle ilişkili sonucu döndürün:
CASE expression
WHEN value1 THEN result1
WHEN value2 THEN result2
ELSE default_result
END
NULLIF:
NULLIF(a, b)eşitse NULLadöndürürb, aksi takdirde döndürüra.
Example:
MATCH (p:Person)
RETURN p.firstName,
CASE p.gender
WHEN 'male' THEN 'M'
WHEN 'female' THEN 'F'
ELSE 'Other'
END AS gender_code,
NULLIF(p.browserUsed, 'Unknown') AS browser
Aranan CASE WHEN <predicate> ifadeler desteklenmiyor. Satır dalı yönlendirmek ve seçilen dal için bir sorgu ifadesi veya iç içe işlem çalıştırmak için koşullu bir ifade kullanınWHEN.
Dize işlevleri
Karakter dizelerini ölçmek, dönüştürmek, aramak, karşılaştırmak ve birleştirmek için dize fonksiyonlarını kullanın.
Karakter uzunluğu ve durum
Bu fonksiyonları karakter dizilerini ölçmek veya değiştirmek için kullanın:
| Function | Description |
|---|---|
CHAR_LENGTH(string) |
Karakter sayısını döndürür. |
UPPER(string) |
Unicode büyük harf eşlemesini uygular. |
LOWER(string) |
Unicode küçük harf eşlemesi uygulanır. |
CASEFOLD(string) |
Küçük-küçük küçük harfsiz eşleştirme için yerel bağımsız Unicode kılıf katlamayı uygular. |
Unicode eşlemeleri, bir dizinin uzunluğunu veya temsilini değiştirebilir:
RETURN UPPER('straße') AS uppercase,
LOWER('İ') AS lowercase,
CASEFOLD('Straße') AS folded
Sonuçlar sırasıyla , i̇, ve strasse, şeklindedirSTRASSE.
CASEFOLD
LOWERile eşdeğer değildir. Örneğin, durum katlama ß ile ss Yunan sigma formlarını Σ, σ, ve ς ile σeşler.
Dizeleri normalize et
GQL, dört Unicode normalizasyon formu tanımlar:
- Normalizasyon Formu C (
NFC), kanonik bileşim. - Normalizasyon Formu D (
NFD), kanonik ayrıştırma. - Normalizasyon Formu KC (
NFKC), uyumluluk bileşimi. - Normalizasyon Formu KD (
NFKD), uyumluluk ayrıştırması.
NORMALIZE(string) varsayılan olarak NFC'ye geçer. İkinci argüman olarak bir normalizasyon formu belirtin:
RETURN NORMALIZE('cafe\u0301') AS composed,
NORMALIZE('café', NFD) AS decomposed
Argüman bir iplik olmalı.
Important
Graph şu anda NFC ve NFD'yi destekliyor. NFKC veya NFKD belirtmek hata oluşturur.
Kesim telleri
Bir dizinin her iki ucundan, başlangıcından veya sonundan boşluk karakterlerini veya belirli bir karakteri çıkarmak için kullanılır TRIM :
RETURN TRIM(' text ') AS both_ends,
TRIM(BOTH FROM ' text ') AS explicit_both,
TRIM(LEADING FROM ' text ') AS beginning,
TRIM(TRAILING FROM ' text ') AS ending,
TRIM(LEADING 'f' FROM 'foobar') AS custom_character
Özel trim değeri tam olarak bir bayt olmalıdır. Çok baytlı Unicode karakterleri ve birden fazla karakter içeren dizeler özel kesme değerleri olarak desteklenmez. Bir null kaynak veya özel kesim değeri null döndürür.
Stringleri birleştirme
STRING_JOIN(list [, delimiter]) bir dizi tellere katılır. Varsayılan ayırıcı, ardından bir boşluk gelen virgüldür:
RETURN STRING_JOIN(['foo', 'bar', 'baz']) AS default_delimiter,
STRING_JOIN(['foo', 'bar', 'baz'], '-') AS custom_delimiter
Sonuçlar foo, bar, baz ve foo-bar-baz. Boş bir liste boş bir dizi döndürür. Bir null liste, null sınırlayıcı veya null list öğesi null döndürür. Her null olmayan liste elemanı bir dizi olmalıdır.
Normal ifade işlevleri
Graph, bu düzenli ifade fonksiyonlarını GQL'ye uzantı olarak sağlar:
| Function | Use |
|---|---|
MSFT.REGEXP_LIKE |
Metnin eşleşme olup olmadığını test edin. |
MSFT.REGEXP_COUNT |
Kibritleri say. |
MSFT.REGEXP_INSTR |
Bir eşleşme veya yakalama grubunun konumunu bul. |
MSFT.REGEXP_SUBSTR |
Bir eşleşme veya capture grubunun metnini geri döndür. |
MSFT.REGEXP_REPLACE |
Eşleşen metni değiştir. |
MSFT.REGEXP_LIKE
Kalıp kaynak dizinin herhangi bir kısmıyla eşleştiğinde geri döner TRUE . Eşleşme bulunmazsa FALSE döndürür.
| Argümanlar | Syntax |
|---|---|
| 2 | MSFT.REGEXP_LIKE(source, pattern) |
| 3 | MSFT.REGEXP_LIKE(source, pattern, flags) |
source arama dizisi.
patternifadenin kendisi veya gibi çapalar ^$kullanmadıkça herhangi bir alt diziyle source eşleştirilir.
flags
Eşleşme kuralları ve seçeneklerinde tanımlandığı şekilde eşleşme davranışını değiştirir.
RETURN MSFT.REGEXP_LIKE('HELLO', 'hello', 'i') AS matches
Sonuç TRUE'dır.
MSFT.REGEXP_COUNT
Eşleşme sayısını döndürür. Eşleşme bulunmazsa 0 döndürür.
| Argümanlar | Syntax |
|---|---|
| 2 | MSFT.REGEXP_COUNT(source, pattern) |
| 3 | MSFT.REGEXP_COUNT(source, pattern, start) |
| 4 | MSFT.REGEXP_COUNT(source, pattern, start, flags) |
source arama dizisi ve pattern sayılması gereken eşleşmeleri belirler.
start eşleştirmenin başlayabileceği sıfır tabanlı Unicode kod noktası konumudur. Bir maç bu pozisyonda veya sonrasında başlamalıdır. Bu pozisyon, sabitlenmiş desenler için telin yeni bir başlangıcı olmuyor.
flags
Eşleşme kuralları ve seçeneklerinde tanımlandığı şekilde eşleşme davranışını değiştirir.
RETURN MSFT.REGEXP_COUNT('1a2a3a4', '[0-9]', 3) AS match_count
Arama pozisyon , ikinci konumdan başlar3, yani sadece rakamlar 3 ve 4 sayılır.a Sonuç 2'dır.
MSFT.REGEXP_INSTR
Seçilen bir eşleşme veya yakalama grubunun sıfır tabanlı konumunu döndürür.
| Argümanlar | Syntax |
|---|---|
| 2 | MSFT.REGEXP_INSTR(source, pattern) |
| 3 | MSFT.REGEXP_INSTR(source, pattern, start) |
| 4 | MSFT.REGEXP_INSTR(source, pattern, start, occurrence) |
| 5 | MSFT.REGEXP_INSTR(source, pattern, start, occurrence, return_option) |
| 6 | MSFT.REGEXP_INSTR(source, pattern, start, occurrence, return_option, flags) |
| 7 | MSFT.REGEXP_INSTR(source, pattern, start, occurrence, return_option, flags, group) |
source arama dizisi ve pattern eşleşmeleri tanımlar.
start eşleştirmenin başlayabileceği sıfır tabanlı Unicode kod noktası konumudur. Bir eşleşme, bu pozisyonda veya sonrasında başlamalıdır; bu da sabitlenmiş desenler için ipin yeni başlangıcına dönüşmez.
occurrence Bulunduğundan startilk, ikinci veya sonraki örtüşmeyen eşleşmeyi seçer.
group O eşleşme içinde ne bulunacağını seçer: 0 tam eşleşmeyi seçer ve pozitif değer numaralı yakalama grubunu seçer.
return_option seçilen maçın veya grubun hangi sınırının geri döneceğini belirler: 0 başlangıç pozisyonunu döndürür ve 1 bitişinden hemen sonra konumu geri getirir.
flags
Eşleşme kuralları ve seçeneklerinde tanımlandığı şekilde eşleşme davranışını değiştirir.
Eğer eşleşen bir oluşum bulunmazsa veya seçilen yakalama grubu bu gerçekleşmeye katılmazsa, fonksiyon -1döner.
RETURN MSFT.REGEXP_INSTR('banana', 'a', 0, 2) AS match_position
İkinci maç pozisyonda 3başlar, yani sonuç .3
MSFT.REGEXP_SUBSTR
Seçilen bir eşleşme veya capture grubunun metnini döndürür.
| Argümanlar | Syntax |
|---|---|
| 2 | MSFT.REGEXP_SUBSTR(source, pattern) |
| 3 | MSFT.REGEXP_SUBSTR(source, pattern, start) |
| 4 | MSFT.REGEXP_SUBSTR(source, pattern, start, occurrence) |
| 5 | MSFT.REGEXP_SUBSTR(source, pattern, start, occurrence, flags) |
| 6 | MSFT.REGEXP_SUBSTR(source, pattern, start, occurrence, flags, group) |
source arama dizisi ve pattern eşleşmeleri tanımlar.
start eşleştirmenin başlayabileceği sıfır tabanlı Unicode kod noktası konumudur. Bir eşleşme, bu pozisyonda veya sonrasında başlamalıdır; bu da sabitlenmiş desenler için ipin yeni başlangıcına dönüşmez.
occurrence Bulunduğundan startilk, ikinci veya sonraki örtüşmeyen eşleşmeyi seçer.
group O eşleşmeden dönecek metni seçer: 0 tam eşleşmeyi seçer ve pozitif bir değer numaralı yakalama grubunu seçer.
flags
Eşleşme kuralları ve seçeneklerinde tanımlandığı şekilde eşleşme davranışını değiştirir.
Eğer eşleşen bir oluşum bulunmazsa veya seçilen yakalama grubu bu meydana katılmazsa, fonksiyon null döner.
RETURN MSFT.REGEXP_SUBSTR(
'12-345',
'([0-9]+)-([0-9]+)',
0,
1,
'',
2
) AS matched_text
İlk oluşum tam dizidir ve yakalama grubu 2345, böylece sonuç .345
MSFT.REGEXP_REPLACE
Eşleşen metnin yerini alıyor. Varsayılan olarak, her eşleşmeyi değiştirir ve yerine metin kelimesi kelimesine ekler.
| Argümanlar | Syntax |
|---|---|
| 3 | MSFT.REGEXP_REPLACE(source, pattern, [EXACT \| TEMPLATE] replacement) |
| 4 | MSFT.REGEXP_REPLACE(source, pattern, [EXACT \| TEMPLATE] replacement, start) |
| 5 | MSFT.REGEXP_REPLACE(source, pattern, [EXACT \| TEMPLATE] replacement, start, occurrence) |
| 6 | MSFT.REGEXP_REPLACE(source, pattern, [EXACT \| TEMPLATE] replacement, start, occurrence, flags) |
source değiştirilecek dizidir ve pattern eşleşmeleri belirler.
replacement seçilmiş bir eşleşme için eklenen metindir.
EXACT kelime anlamıyla ekler; TEMPLATE yakalama referanslarını yorumlar.
start Sıfır tabanlı Unicode kod noktası konumudur ve burada yenileme başlayabilir. Bir maç bu pozisyonda veya sonrasında başlamalıdır. Önceki start metin değişmeden korunur ve konum, sabitlenmiş desenler için telin yeni bir başlangıcı olmur. Her eşleşmeyi yerine koymak için , startya da sadece numaralandırılmış, örtüşmeyen eşleşmeyi değiştirmek için pozitif bir değere ayarlanır occurrence0. Belirli bir olay seçildiğinde önceki maçlar start değişmeden kalır.
flags
Eşleşme kuralları ve seçeneklerinde tanımlandığı şekilde eşleşme davranışını değiştirir.
RETURN MSFT.REGEXP_REPLACE('a1b2c3', '[0-9]', '#', 0, 2) AS replaced
Sadece ikinci basamak eşleşmesi değiştirilir, böylece sonuç .a1b#c3
Eşleşme bulunmazsa, kaynak dizisi değişmeden geri döner.
Eşleşen metni yeniden TEMPLATEkullanmak için . Bu modda, \0\9 tam eşleşme ve yakalama gruplarına atıfta bulunur ve \\ kelimenin tam anlamıyla bir ters eğik çizgi ekler. Bu referansları ek kaçış olmadan geçirmek için ham bir dize literal, ön eki @ile , kullanın:
RETURN MSFT.REGEXP_REPLACE(
'John Smith',
@'([A-Za-z]+) ([A-Za-z]+)',
TEMPLATE @'\2 \1'
) AS reordered_name
Sonuç Smith John'dır.
Eşleşme kuralları ve seçenekleri
Desenler, RE2 düzenli ifade sözdizimi kullanır ve Unicode dizeleriyle eşleşir. Kaynak herhangi bir dizim ifadesi olabilir. Desen, bayraklar ve yerine koyma dize literalleri olmalı, sayısal seçenekler ise işaretsiz tam sayı literalleri olmalıdır.
Eşleşmeler soldan sağa çakışmadan bulunur. Sıfır uzunlukta eşleşmeden sonra, eşleşme bir Unicode kod noktası ilerler.
Başlangıç pozisyonları ve geri dönen pozisyonlar sıfır tabanlı Unicode kod noktası ofsetleridir. Varlık sayıları tek tabanlıdır, ancak bu durum 0 her karşılaşmayı yerine koymak MSFT.REGEXP_REPLACEanlamına gelir.
Aşağıdaki tablo, atlanmış isteğe bağlı argümanlar için varsayılan değerleri listeler:
| Function | Defaults |
|---|---|
MSFT.REGEXP_LIKE |
Bayraklar boş. |
MSFT.REGEXP_COUNT |
Başlangıç ; 0bayraklar boş. |
MSFT.REGEXP_INSTR |
Başlangıç; 0gerçekleşme ; 1dönüş seçeneği 0; bayraklar boş; grup 0. |
MSFT.REGEXP_SUBSTR |
Başlangıç; 0gerçekleşme ; 1bayraklar boş; grup 0. |
MSFT.REGEXP_REPLACE |
Mod EXACT; başlangıç 0; gerçekleşme 0; bayraklar boş. |
Isteğe bağlı bayraklar şunlardır:
| Flag | Davranış |
|---|---|
i |
Vaka bağımsız olarak eşleştir. |
m |
Her satırın başını ve sonunu yapın ^ ve $ eşleştirin. |
s |
Yeni karakterleri eşleştir . . |
Bayrakları tek bir dizide birleştirin, örneğin 'ims'. Bir null kaynak null döndürür. Desteklenmeyen bir bayrak, geçersiz düzenli ifade, geçersiz dönüş seçeneği veya geçersiz oluşum veya grup numarası hata döndürür.
Graf işlevleri
-
nodes(path)- bir yol değerinden düğümler döndürür. -
edges(path)- yol değerinden kenarları döndürür. -
elements(path)- bir yoldaki tüm düğümleri ve kenarları yol sırasına göre tek bir liste olarak döndürür. -
labels(node_or_edge)- bir düğümün veya kenarın etiketlerini dize listesi olarak döndürür. -
path_length(path)- bir yoldaki kenar sayısını döndürür. -
element_id(node_or_edge)- düğüm veya kenar tanımlayıcısını opak bir dizi olarak döndürür.
ELEMENT_ID bir düğüm veya kenar referansını kabul eder ve null girdi için null döndürür.
Geri dönen ipi opak olarak kabul edin.
Example:
MATCH p=(:Company)<-[:workAt]-(:Person)-[:knows]-{1,3}(:Person)-[:workAt]->(:Company)
RETURN nodes(p) AS chain_of_colleagues, path_length(p) AS hops
Liste işlevleri
-
size(list)- liste değerinin boyutunu döndürür. -
trim(list,n)- Bir listeyi en fazlaneleman olarak kısaltır.
Example:
MATCH (p:Person)-[:hasInterest]->(t:Tag)
LET personId = p.id, personName = p.firstName
RETURN personId, personName, collect_list(t.name) AS interests
GROUP BY personId, personName
FILTER size(interests) > 3
Zamana bağlı işlevler
-
CURRENT_TIMESTAMP- geçerli bölgeli tarih saat değerini döndürür. -
ZONED_DATETIME(string)- ISO 8601 dizisiyle temsil edilen bölgeli tarih saatini döndürür. -
DURATION(string)- ISO 8601 süreli diziyle temsil edilen gündüz süresini döndürür.
Example:
RETURN CURRENT_TIMESTAMP AS now,
DURATION('PT2H') AS twoHours
İki bölgeli tarih saati arasında bir süre çıkarmak için çıkarma operatörünü kullanın:
RETURN ZONED_DATETIME('2026-09-17T12:00:00Z')
- ZONED_DATETIME('2026-09-17T10:00:00Z') AS elapsed
Important
Grafik, gündüz sürelerini destekler, ancak yıl-ay sürelerini desteklemez.
DURATION_BETWEEN(start, end) şu anda desteklenmiyor; bunun yerine iki bölgeli tarih saati değerini çıkarın.
Genel işlevler
-
coalesce(value1, value2, ...)- ilk null olmayan değeri döndürür. -
to_json_string(value)- Bir değeri JSON dize gösterimine dönüştürür.
Example:
MATCH (p:Person)
RETURN coalesce(p.firstName, 'Unknown') AS display_name,
to_json_string(p) AS person_json