Partager via


Utilisation des expressions de transformation de données dans le flux de données de mappage

S’APPLIQUE À : Azure Data Factory Azure Synapse Analytics

Tip

Essayez Data Factory dans Microsoft Fabric, une solution d’analyse tout-en-un pour les entreprises. Microsoft Fabric couvre tous les aspects, du déplacement des données à la science des données, en passant par l’analyse en temps réel, la business intelligence et le reporting. Découvrez comment démarrer un nouvel essai gratuitement !

Les flux de données sont disponibles dans les pipelines Azure Data Factory et les pipelines Azure Synapse Analytics. Cet article s’applique aux flux de données de mappage. Si vous débutez avec les transformations, reportez-vous à l’article d’introduction Transformer des données à l’aide de flux de données de mappage.

Cet article fournit des détails sur l’utilisation de toutes les expressions et fonctions prises en charge par Azure Data Factory et Azure Synapse Analytics dans les flux de données de mappage. Pour obtenir des résumés de chaque type de fonction pris en charge, reportez-vous aux articles suivants :

Liste alphabétique de toutes les fonctions

La liste alphabétique suivante inclut toutes les fonctions disponibles dans les flux de données de mappage.

A

abs

abs(<value1> : number) => number

Retourne la valeur absolue d’un nombre.

  • abs(-20) -> 20
  • abs(10) -> 10

acos

acos(<value1> : number) => double

Calcule une valeur inverse de cosinus.

  • acos(1) -> 0.0

add

add(<value1> : any, <value2> : any) => any

Ajoute une paire de chaînes ou de nombres. Ajoute une date à plusieurs jours. Ajoute une durée à un horodatage. Ajoute un tableau à un autre de type similaire. Identique à l’opérateur +.

  • add(10, 20) -> 30
  • 10 + 20 -> 30
  • add('ice', 'cream') -> 'icecream'
  • 'ice' + 'cream' + ' cone' -> 'icecream cone'
  • add(toDate('2012-12-12'), 3) -> toDate('2012-12-15')
  • toDate('2012-12-12') + 3 -> toDate('2012-12-15')
  • [10, 20] + [30, 40] -> [10, 20, 30, 40]
  • toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS') + (days(1) + hours(2) - seconds(10)) -> toTimestamp('2019-02-04 07:19:18.871', 'yyyy-MM-dd HH:mm:ss.SSS')

addDays

addDays(<date/timestamp> : datetime, <days to add> : integral) => datetime

Ajoute des jours à un horodatage de date ou d’heure. Identique à l’opérateur + pour les dates.

  • addDays(toDate('2016-08-08'), 1) -> toDate('2016-08-09')

addMonths

addMonths(<date/timestamp> : datetime, <months to add> : integral, [<value3> : string]) => datetime

Ajoute des mois à un horodatage de date ou d’heure. Vous pouvez facultativement fournir un fuseau horaire.

  • addMonths(toDate('2016-08-31'), 1) -> toDate('2016-09-30')
  • addMonths(toTimestamp('2016-09-30 10:10:10'), -1) -> toTimestamp('2016-08-31 10:10:10')

and

and(<value1> : boolean, <value2> : boolean) => boolean

Utilise l’opérateur logique AND . Identique à &&.

  • and(true, false) -> false
  • true && false -> false

approxDistinctCount

approxDistinctCount(<value1> : any, [ <value2> : double ]) => long

Obtient le nombre agrégé approximatif de valeurs distinctes pour une colonne. Le deuxième paramètre facultatif sert à contrôler l’erreur d’estimation.

  • approxDistinctCount(ProductID, .05) => long

array

array([<value1> : any], ...) => array

Crée un tableau d’éléments. Tous les éléments doivent être du même type. Si aucun élément n’est spécifié, par défaut, le tableau contient des chaînes vides. Identique à un opérateur de création [].

  • array('Seattle', 'Washington')
  • ['Seattle', 'Washington']
  • ['Seattle', 'Washington'][1]
  • 'Washington'

ascii

ascii(<Input> : string) => number

Retourne la valeur numérique du caractère d’entrée. Si la chaîne d’entrée a plusieurs caractères, la valeur numérique du premier caractère est retournée.

  • ascii('A') -> 65
  • ascii('a') -> 97

asin

asin(<value1> : number) => double

Calcule une valeur de sinus inverse.

  • asin(0) -> 0.0

assertErrorMessages

assertErrorMessages() => map

Retourne une carte de tous les messages d’erreur pour la ligne avec l’ID d’assertion comme clé.

Examples

  • assertErrorMessages() => ['assert1': 'This row failed on assert1.', 'assert2': 'This row failed on assert2.']. In this example, at(assertErrorMessages(), 'assert1') would return 'This row failed on assert1.'

associate

reassociate(<value1> : map, <value2> : binaryFunction) => map

Crée un mappage de clés/valeurs. Toutes les clés et valeurs doivent être du même type. Si aucun élément n’est spécifié, la valeur par défaut est de type mappage de chaîne à chaîne. Identique à un opérateur de création [ -> ]. Les clés et les valeurs doivent être spécifiées en alternance.

  • associate('fruit', 'apple', 'vegetable', 'carrot' )=> ['fruit' -> 'apple', 'vegetable' -> 'carrot']

at

at(<value1> : array/map, <value2> : integer/key type) => array

Recherche l’élément au niveau d’un index de tableau. L’index est basé sur 1. Un index hors limites entraîne une valeur Null. Recherche une valeur dans une carte lorsqu’une clé est donnée. Si la clé est introuvable, elle retourne une valeur Null.

  • at(['apples', 'pears'], 1) => 'apples'
  • at(['fruit' -> 'apples', 'vegetable' -> 'carrot'], 'fruit') => 'apples'

atan

atan(<value1> : number) => double

Calcule une valeur de tangente inverse.

  • atan(0) -> 0.0

atan2

atan2(<value1> : number, <value2> : number) => double

Retourne l’angle (en radians) qui se trouve entre l’axe positif des abscisses d’un plan et le point donné par les coordonnées.

  • atan2(0, 0) -> 0.0

avg

avg(<value1> : number) => number

Obtient la moyenne des valeurs d’une colonne.

  • avg(sales)

avgIf

avgIf(<value1> : boolean, <value2> : number) => number

Obtient la moyenne des valeurs d’une colonne, en fonction des critères.

  • avgIf(region == 'West', sales)

B

between

between(<value1> : any, <value2> : any, <value3> : any) => boolean

Vérifie si la première valeur est comprise entre deux autres valeurs incluses. Vous pouvez comparer des valeurs numériques, des chaînes et datetime.

  • between(10, 5, 24)
  • true
  • between(currentDate(), currentDate() + 10, currentDate() + 20)
  • false

bitwiseAnd

bitwiseAnd(<value1> : integral, <value2> : integral) => integral

Utilise l'opérateur au niveau des bits And sur les types intégraux. Identique à l’opérateur &.

  • bitwiseAnd(0xf4, 0xef)
  • 0xe4
  • (0xf4 & 0xef)
  • 0xe4

bitwiseOr

bitwiseOr(<value1> : integral, <value2> : integral) => integral

Utilise l'opérateur au niveau des bits Or sur les types intégraux. Identique à l’opérateur |.

  • bitwiseOr(0xf4, 0xef)
  • 0xff
  • (0xf4 | 0xef)
  • 0xff

bitwiseXor

bitwiseXor(<value1> : any, <value2> : any) => any

Utilise l'opérateur au niveau des bits Or sur les types intégraux. Identique à l’opérateur |

  • bitwiseXor(0xf4, 0xef)
  • 0x1b
  • (0xf4 ^ 0xef)
  • 0x1b
  • (true ^ false)
  • true
  • (true ^ true)
  • false

blake2b

blake2b(<value1> : integer, <value2> : any, ...) => string

Calcule la synthèse Blake2 d’un ensemble de colonnes de types de données primitifs variables en fonction d’une longueur de bits, qui ne peut être que plusieurs de 8 entre 8 et 512. Vous pouvez l’utiliser pour calculer une empreinte digitale pour une ligne.

  • blake2b(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4'))
  • 'c9521a5080d8da30dffb430c50ce253c345cc4c4effc315dab2162dac974711d'

blake2bBinary

blake2bBinary(<value1> : integer, <value2> : any, ...) => binary

Calcule la synthèse Blake2 d’un ensemble de colonnes de types de données primitifs variables en fonction d’une longueur de bits, qui ne peut être que plusieurs de 8 entre 8 et 512. Vous pouvez l’utiliser pour calculer une empreinte digitale pour une ligne.

  • blake2bBinary(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4'))
  • unHex('c9521a5080d8da30dffb430c50ce253c345cc4c4effc315dab2162dac974711d')

byItem

byItem(<parent column> : any, <column name> : string) => any

Recherche un sous-élément dans une structure ou un tableau de structure. S’il existe plusieurs correspondances, la première correspondance est retournée. S’il n’y a aucune correspondance, une NULL valeur est retournée. La valeur retournée doit être convertie par l’une des actions de conversion de type (par ? date exemple, et ? string). Adressez les noms de colonnes connus au moment du design par leurs noms. Les entrées calculées ne sont pas prises en charge, mais vous pouvez utiliser des substitutions de paramètres.

  • byItem( byName('customer'), 'orderItems') ? (itemName as string, itemQty as integer)
  • byItem( byItem( byName('customer'), 'orderItems'), 'itemName') ? string

byName

byName(<column name> : string, [<stream name> : string]) => any

Sélectionne une valeur de colonne selon le nom dans le flux de données. Vous pouvez transmettre un nom de flux facultatif en tant que deuxième argument. S’il existe plusieurs correspondances, la première correspondance est retournée. S’il n’y a aucune correspondance, une NULL valeur est retournée. La valeur retournée doit être convertie par l’une des fonctions de conversion de type (par TO_DATE exemple, et TO_STRING). Adressez les noms de colonnes connus au moment du design par leur nom. Les entrées calculées ne sont pas prises en charge, mais vous pouvez utiliser des substitutions de paramètres.

  • toString(byName('parent'))
  • toLong(byName('income'))
  • toBoolean(byName('foster'))
  • toLong(byName($debtCol))
  • toString(byName('Bogus Column'))
  • toString(byName('Bogus Column', 'DeriveStream'))

byNames

byNames(<column names> : array, [<stream name> : string]) => any

Sélectionnez un tableau de colonnes par son nom dans le flux. Vous pouvez transmettre un nom de flux facultatif en tant que deuxième argument. S’il existe plusieurs correspondances, la première correspondance est retournée. S’il n’y a aucune correspondance pour une colonne, la sortie entière est une NULL valeur. La valeur retournée nécessite une fonction de conversion de type (par toDate exemple, et toString). Adressez les noms de colonnes connus au moment du design par leurs noms. Les entrées calculées ne sont pas prises en charge, mais vous pouvez utiliser des substitutions de paramètres.

  • toString(byNames(['parent', 'child']))
  • byNames(['parent']) ? string
  • toLong(byNames(['income']))
  • byNames(['income']) ? long
  • toBoolean(byNames(['foster']))
  • toLong(byNames($debtCols))
  • toString(byNames(['a Column']))
  • toString(byNames(['a Column'], 'DeriveStream'))
  • byNames(['orderItem']) ? (itemName as string, itemQty as integer)

byOrigin

byOrigin(<column name> : string, [<origin stream name> : string]) => any

Sélectionne une valeur de colonne selon le nom dans le flux de données d’origine. Le deuxième argument est le nom du flux d’origine. S’il existe plusieurs correspondances, la première correspondance est retournée. S’il n’y a aucune correspondance, une NULL valeur est retournée. La valeur retournée doit être convertie par l’une des fonctions de conversion de type (par TO_DATE exemple, et TO_STRING). Adressez les noms de colonnes connus au moment du design par leur nom. Les entrées calculées ne sont pas prises en charge, mais vous pouvez utiliser des substitutions de paramètres.

  • toString(byOrigin('ancestor', 'ancestorStream'))

byOrigins

byOrigins(<column names> : array, [<origin stream name> : string]) => any

Sélectionne un tableau de colonnes par son nom dans le flux. Le deuxième argument est le flux à partir duquel il provient. S’il existe plusieurs correspondances, la première correspondance est retournée. S’il n’y a aucune correspondance, une NULL valeur est retournée. La valeur retournée doit être convertie par l’une des fonctions de conversion de type (par TO_DATE exemple, et TO_STRING). Adressez les noms de colonnes connus au moment du design par leurs noms. Les entrées calculées ne sont pas prises en charge, mais vous pouvez utiliser des substitutions de paramètres.

  • toString(byOrigins(['ancestor1', 'ancestor2'], 'ancestorStream'))

byPath

byPath(<value1> : string, [<streamName> : string]) => any

Recherche un chemin d’accès hiérarchique par nom dans le flux. Vous pouvez transmettre un nom de flux facultatif en tant que deuxième argument. Si aucun chemin d’accès de ce type n’est trouvé, il retourne NULL. Les noms/chemins de colonnes connus au moment du design doivent être traités uniquement à l’aide de leur nom ou de leur chemin de notation par points. Les entrées calculées ne sont pas prises en charge, mais vous pouvez utiliser des substitutions de paramètres.

  • byPath('grandpa.parent.child') => column

byPosition

byPosition(<position> : integer) => any

Sélectionne une valeur de colonne selon sa position relative (base 1) dans le flux. Si la position est hors limites, elle retourne une NULL valeur. La valeur retournée doit être convertie par l’une des fonctions de conversion de type (par TO_DATE exemple, ou TO_STRING). Les entrées calculées ne sont pas prises en charge, mais vous pouvez utiliser des substitutions de paramètres.

  • toString(byPosition(1))
  • toDecimal(byPosition(2), 10, 2)
  • toBoolean(byName(4))
  • toString(byName($colName))
  • toString(byPosition(1234))

C

case

case(<condition> : boolean, <true_expression> : any, <false_expression> : any, ...) => any

En fonction des conditions alternées, la case fonction applique une valeur ou l’autre. Si le nombre d’entrées est pair, l’autre est défini NULL par défaut pour la dernière condition.

  • case(10 + 20 == 30, 'dumbo', 'gumbo') -> 'dumbo'
  • case(10 + 20 == 25, 'bojjus', 'do' < 'go', 'gunchus') -> 'gunchus'
  • isNull(case(10 + 20 == 25, 'bojjus', 'do' > 'go', 'gunchus')) -> true
  • case(10 + 20 == 25, 'bojjus', 'do' > 'go', 'gunchus', 'dumbo') -> 'dumbo'

cbrt

cbrt(<value1> : number) => double

Calcule la racine cubique d’un nombre.

  • cbrt(8) -> 2.0

ceil

ceil(<value1> : number) => number

Retourne le plus petit entier qui n’est pas inférieur au nombre.

  • ceil(-0.1) -> 0

char

char(<Input> : number) => string

Retourne le caractère ASCII représenté par le numéro d’entrée. Si le nombre est supérieur à 256, le résultat est équivalent à char (nombre % 256).

  • char(65) -> 'A'
  • char(97) -> 'a'

coalesce

coalesce(<value1> : any, ...) => any

Renvoie la première valeur non nulle d'un jeu d'entrées. Toutes les entrées doivent être du même type.

  • coalesce(10, 20) -> 10
  • coalesce(toString(null), toString(null), 'dumbo', 'bo', 'go') -> 'dumbo'

collect

collect(<value1> : any) => array

Collecte toutes les valeurs de l’expression dans le groupe agrégé dans un tableau. Vous pouvez collecter et transformer des structures en structures alternatives pendant ce processus. Le nombre d’éléments est égal au nombre de lignes de ce groupe et peut contenir des valeurs Null. Le nombre d’éléments collectés doit être petit.

  • collect(salesPerson)
  • collect(firstName + lastName))
  • collect(@(name = salesPerson, sales = salesAmount) )

collectUnique

collectUnique(<value1> : any) => array

Collecte toutes les valeurs de l’expression dans le groupe agrégé pour former un tableau unique. Vous pouvez collecter et transformer des structures en structures alternatives pendant ce processus. Le nombre d’éléments est égal au nombre de lignes de ce groupe et peut contenir des valeurs Null. Le nombre d’éléments collectés doit être petit.

  • collect(salesPerson)
  • collect(firstName + lastName))
  • collect(@(name = salesPerson, sales = salesAmount) )

columnNames

columnNames( <value1>columnNames( : string, i><value1> : boolean) => array

Obtient les noms de toutes les colonnes de sortie pour un flux. Vous pouvez transmettre un nom de flux facultatif en tant que premier argument. Le deuxième argument est également facultatif, avec false comme valeur par défaut. Si vous définissez le deuxième argument sur true(), Data Factory retourne uniquement les colonnes dérivées via la dérive de schéma.

  • columnNames()
  • columnNames('DeriveStream')
  • columnNames('DeriveStream', true())
  • columnNames('', true())

columns

columns([<stream name> : string]) => any

Obtient les valeurs de toutes les colonnes de sortie pour un flux. Vous pouvez transmettre un nom de flux facultatif en tant que deuxième argument.

  • columns()
  • columns('DeriveStream')

compare

compare(<value1> : any, <value2> : any) => integer

Compare deux valeurs du même type. Retourne un entier négatif si valeur1 < valeur2, 0 si valeur1 == valeur2 et une valeur positive si valeur1 > valeur2.

  • (compare(12, 24) < 1) -> true
  • (compare('dumbo', 'dum') > 0) -> true

concat

concat(<this> : string, <that> : string, ...) => string

Concatène un nombre variable de chaînes. Identique à l’opérateur + avec des chaînes.

  • concat('dataflow', 'is', 'awesome') -> 'dataflowisawesome'
  • 'dataflow' + 'is' + 'awesome' -> 'dataflowisawesome'
  • isNull('sql' + null) -> true

concatWS

concatWS(<separator> : string, <this> : string, <that> : string, ...) => string

Concatène un nombre variable de chaînes avec un séparateur. Le premier paramètre est le séparateur.

  • concatWS(' ', 'dataflow', 'is', 'awesome') -> 'dataflow is awesome'
  • isNull(concatWS(null, 'dataflow', 'is', 'awesome')) -> true
  • concatWS(' is ', 'dataflow', 'awesome') -> 'dataflow is awesome'

contains

contains(<value1> : array, <value2> : unaryfunction) => boolean

Retourne true si un élément du tableau fourni est évalué comme true dans le prédicat fourni. La fonction Th contains attend une référence à un élément dans la fonction de prédicat en tant que #item.

  • contains([1, 2, 3, 4], #item == 3) -> true
  • contains([1, 2, 3, 4], #item > 5) -> false

cos

cos(<value1> : number) => double

Calcule une valeur de cosinus.

  • cos(10) -> -0.8390715290764524

cosh

cosh(<value1> : number) => double

Calcule le cosinus hyperbolique d’une valeur.

  • cosh(0) -> 1.0

count

count([<value1> : any]) => long

Obtient le nombre agrégé de valeurs. Si une ou plusieurs colonnes facultatives sont spécifiées, elle ignore les NULL valeurs du nombre.

  • count(custId)
  • count(custId, custName)
  • count()
  • count(iif(isNull(custId), 1, NULL))

countAll

countAll([<value1> : any]) => long

Obtient le nombre agrégé de valeurs, y compris les valeurs Null.

  • countAll(custId)
  • countAll()

countDistinct

countDistinct(<value1> : any, [<value2> : any], ...) => long

Obtient la somme agrégée de valeurs distinctes appartenant à un ensemble de colonnes.

  • countDistinct(custId, custName)

countAllDistinct

countAllDistinct(<value1> : any, [<value2> : any], ...) => long

Obtient le nombre agrégé de valeurs distinctes d’un ensemble de colonnes, y compris les valeurs Null.

  • countAllDistinct(custId, custName)

countIf

countIf(<value1> : boolean, [<value2> : any]) => long

Obtient le nombre agrégé de valeurs, en fonction des critères. Si la colonne facultative est spécifiée, elle ignore les NULL valeurs du nombre.

  • countIf(state == 'CA' && commission < 10000, name)

covariancePopulation

covariancePopulation(<value1> : number, <value2> : number) => double

Obtient la covariance de remplissage entre deux colonnes.

  • covariancePopulation(sales, profit)

covariancePopulationIf

covariancePopulationIf(<value1> : boolean, <value2> : number, <value3> : number) => double

Obtient la covariance de population de deux colonnes, sur la base de critères.

  • covariancePopulationIf(region == 'West', sales)

covarianceSample

covarianceSample(<value1> : number, <value2> : number) => double

Obtient l’exemple de covariance de deux colonnes.

  • covarianceSample(sales, profit)

covarianceSampleIf

covarianceSampleIf(<value1> : boolean, <value2> : number, <value3> : number) => double

Obtient l’exemple de covariance de deux colonnes, en fonction des critères.

  • covarianceSampleIf(region == 'West', sales, profit)

crc32

crc32(<value1> : any, ...) => long

Calcule le hachage CRC32 d’un ensemble de colonnes de types de données primitifs variables en fonction d’une longueur de bits, qui ne peut être que de valeurs 0(256), 224, , 256384et 512. Vous pouvez l’utiliser pour calculer une empreinte digitale pour une ligne.

  • crc32(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> 3630253689L

cumeDist

cumeDist() => integer

La cumeDist fonction calcule la position d’une valeur par rapport à toutes les valeurs de la partition. Le résultat correspond au nombre de lignes précédant ou correspondant à la ligne actuelle dans l’ordre de la partition, divisé par le nombre total de lignes de la partition de fenêtre. Toutes les valeurs égales auront la même position.

  • cumeDist()

currentDate

currentDate([<value1> : string]) => date

Obtient la date à laquelle l’exécution du travail commence. Vous pouvez passer un fuseau horaire facultatif sous la forme , GMTPSTou UTCAmerica/Cayman. Le fuseau horaire local du centre de données/région de la fabrique de données est utilisé comme valeur par défaut. Reportez-vous à la classe SimpleDateFormat de Java pour connaître les formats disponibles.

  • currentDate() == toDate('2250-12-31') -> false
  • currentDate('PST') == toDate('2250-12-31') -> false
  • currentDate('America/New_York') == toDate('2250-12-31') -> false

currentTimestamp

currentTimestamp() => timestamp

Obtient l’horodatage du début de l’exécution du travail avec un fuseau horaire local.

  • currentTimestamp() == toTimestamp('2250-12-31 12:12:12') -> false

currentUTC

currentUTC([<value1> : string]) => timestamp

Obtient l’horodatage actuel au format UTC. Si vous souhaitez que votre heure actuelle soit interprétée dans un fuseau horaire différent de celui de votre fuseau horaire de cluster, vous pouvez passer un fuseau horaire facultatif sous la forme GMT, PSTou UTCAmerica/Cayman. Il est défini par défaut sur le fuseau horaire actuel. Reportez-vous à la classe SimpleDateFormat de Java pour connaître les formats disponibles. Pour convertir l’heure UTC en fuseau horaire différent, utilisez fromUTC().

  • currentUTC() == toTimestamp('2050-12-12 19:18:12') -> false
  • currentUTC() != toTimestamp('2050-12-12 19:18:12') -> true
  • fromUTC(currentUTC(), 'Asia/Seoul') != toTimestamp('2050-12-12 19:18:12') -> true

D

dayOfMonth

dayOfMonth(<value1> : datetime) => integer

Obtient le jour du mois lorsqu’une date est donnée.

  • dayOfMonth(toDate('2018-06-08')) -> 8

dayOfWeek

dayOfWeek(<value1> : datetime) => integer

Obtient le jour de la semaine lorsqu’une date est donnée. Par exemple, 1 est dimanche, 2 est lundi, ... et 7 est samedi.

  • dayOfWeek(toDate('2018-06-08')) -> 6

dayOfYear

dayOfYear(<value1> : datetime) => integer

Calcule le jour de l'année à partir d'une date donnée.

  • dayOfYear(toDate('2016-04-09')) -> 100

days

days(<value1> : integer) => long

Durée en millisecondes pour le nombre de jours.

  • days(2) -> 172800000L

decode

decode(<Input> : any, <Charset> : string) => binary

Décode les données d’entrée encodées dans une chaîne basée sur le jeu de caractères donné. Vous pouvez utiliser un deuxième argument (facultatif) pour spécifier l’ensemble de caractères à utiliser. Exemples : US-ASCII, ( ISO-8859-1UTF-8par défaut), UTF-16BE, UTF-16LEet UTF-16.

  • decode(array(toByte(97),toByte(98),toByte(99)), 'US-ASCII') -> abc

degrees

degrees(<value1> : number) => double

Convertit les radians en degrés.

  • degrees(3.141592653589793) -> 180

denseRank

denseRank() => integer

Calcule le rang d’une valeur dans un groupe de valeurs spécifiées dans la clause ORDER BY d’une fenêtre. Le résultat est égal à 1 plus le nombre de lignes précédant ou correspondant à la ligne actuelle dans l’ordre de la partition. Les valeurs ne produiront pas d’écarts dans la séquence. La denseRank fonction fonctionne même lorsque les données ne sont pas triées et recherchent la modification des valeurs.

  • denseRank()

distinct

distinct(<value1> : array) => array

Retourne un ensemble distinct d’éléments d’un tableau.

  • distinct([10, 20, 30, 10]) => [10, 20, 30]

divide

divide(<value1> : any, <value2> : any) => any

Divise une paire de nombres. Identique à l’opérateur /.

  • divide(20, 10) -> 2
  • 20 / 10 -> 2

dropLeft

dropLeft(<value1> : string, <value2> : integer) => string

Supprime le nombre de caractères nécessaire à partir de la gauche de la chaîne. Si le nombre à supprimer est supérieur à la longueur de la chaîne, une chaîne vide est retournée.

  • dropLeft('bojjus', 2) => 'jjus'
  • dropLeft('cake', 10) => ''

dropRight

dropRight(<value1> : string, <value2> : integer) => string

Supprime le nombre de caractères nécessaire à partir de la droite de la chaîne. Si le nombre à supprimer est supérieur à la longueur de la chaîne, une chaîne vide est retournée.

  • dropRight('bojjus', 2) => 'bojj'
  • dropRight('cake', 10) => ''

E

encode

encode(<Input> : string, <Charset> : string) => binary

Encode les données de la chaîne d’entrée en binaire basé sur un jeu de caractères. Un deuxième argument (facultatif) peut être utilisé pour spécifier l’ensemble de caractères à utiliser. Exemples : US-ASCII, ( ISO-8859-1UTF-8par défaut), UTF-16BE, UTF-16LEet UTF-16.

  • encode('abc', 'US-ASCII') -> array(toByte(97),toByte(98),toByte(99))

endsWith

endsWith(<string> : string, <substring to check> : string) => boolean

Vérifie si la chaîne se termine par la chaîne fournie.

  • endsWith('dumbo', 'mbo') -> true

equals

equals(<value1> : any, <value2> : any) => boolean

Utilise l’opérateur de comparaison « Égal à ». Identique à l’opérateur ==.

  • equals(12, 24) -> false
  • 12 == 24 -> false
  • 'bad' == 'bad' -> true
  • isNull('good' == toString(null)) -> true
  • isNull(null == null) -> true

equalsIgnoreCase

equalsIgnoreCase(<value1> : string, <value2> : string) => boolean

Utilise l’opérateur de comparaison « Égal à » qui ignore la casse. Identique à l’opérateur <=>.

  • 'abc'<=>'Abc' -> true
  • equalsIgnoreCase('abc', 'Abc') -> true

escape

escape(<string_to_escape> : string, <format> : string) => string

Échappe une chaîne conformément à un format. Les valeurs littérales pour le format acceptable sont json, , xmlecmascript, htmlet java.


except

except(<value1> : array, <value2> : array) => array

Retourne un jeu de différences d’un tableau à partir d’un autre en supprimant les doublons.

  • except([10, 20, 30], [20, 40]) => [10, 30]

expr

expr(<expr> : string) => any

Génère une expression à partir d’une chaîne, qui est identique à l’écriture de cette expression dans une forme non littérale. Vous pouvez l’utiliser pour passer des paramètres en tant que représentations sous forme de chaînes.

  • expr('price * discount') => any

F

factorial

factorial(<value1> : number) => long

Calcule la factorielle d’un nombre.

  • factorial(5) -> 120

false

false() => boolean

Retourne toujours une valeur false. Utilisez la fonction syntax(false()) si une colonne est nommée false.

  • (10 + 20 > 30) -> false
  • (10 + 20 > 30) -> false()

filter

filter(<value1> : array, <value2> : unaryfunction) => array

Filtre hors du tableau les éléments qui ne respectent pas le prédicat fourni. Filter attend une référence à un élément dans la fonction de prédicat sous forme de #item.

  • filter([1, 2, 3, 4], #item > 2) -> [3, 4]
  • filter(['a', 'b', 'c', 'd'], #item == 'a' || #item == 'b') -> ['a', 'b']

find

find(<value1> : array, <value2> : unaryfunction) => any

Recherche le premier élément d’un tableau qui correspond à la condition. Il prend une fonction de filtre dans laquelle vous pouvez vous référer à l’élément dans le tableau en utilisant #item. Pour les cartes profondément imbriquées, vous pouvez faire référence aux cartes parentes à l’aide de la #item_n notation (#item_1, #item_2...) .

  • find([10, 20, 30], #item > 10) -> 20
  • find(['azure', 'data', 'factory'], length(#item) > 4) -> 'azure'
  • find([ @( name = 'Daniel', types = [ @(mood = 'jovial', behavior = 'terrific'), @(mood = 'grumpy', behavior = 'bad') ] ), @( name = 'Mark', types = [ @(mood = 'happy', behavior = 'awesome'), @(mood = 'calm', behavior = 'reclusive') ] ) ], contains(#item.types, #item.mood=='happy') /*Filter out the happy kid*/ )
  • @( name = 'Mark', types = [ @(mood = 'happy', behavior = 'awesome'), @(mood = 'calm', behavior = 'reclusive') ] )

first

first(<value1> : any, [<value2> : boolean]) => any

Obtient la première valeur d’un groupe de colonnes. Si le deuxième paramètre ignoreNulls est omis, Data Factory suppose false.

  • first(sales)
  • first(sales, false)

flatten

flatten(<array> : array, <value2> : array ..., <value2> : boolean) => array

Aplatit un tableau ou des tableaux en un seul tableau. Les tableaux d’éléments atomiques sont retournés sans modification. Le dernier argument est facultatif et sa valeur par défaut est false pour aplatir de manière récursive plus d’un niveau de profondeur.

  • flatten([['bojjus', 'girl'], ['gunchus', 'boy']]) => ['bojjus', 'girl', 'gunchus', 'boy']
  • flatten([[['bojjus', 'gunchus']]] , true) => ['bojjus', 'gunchus']

floor

floor(<value1> : number) => number

Retourne le plus grand entier qui n’est pas supérieur au nombre.

  • floor(-0.1) -> -1

fromBase64

fromBase64(<value1> : string, <encoding type> : string) => string

Décode la chaîne encodée en base64 spécifique. Vous pouvez éventuellement passer le type d’encodage.

  • fromBase64('Z3VuY2h1cw==') -> 'gunchus'
  • fromBase64('SGVsbG8gV29ybGQ=', 'Windows-1252') -> 'Hello World'

fromUTC

fromUTC(<value1> : timestamp, [<value2> : string]) => timestamp

Convertit en horodatage à partir de l’heure UTC. Vous pouvez éventuellement passer le fuseau horaire sous la forme , GMTPSTou UTCAmerica/Cayman. Il est défini par défaut sur le fuseau horaire actuel. Reportez-vous à la classe SimpleDateFormat de Java pour connaître les formats disponibles.

  • fromUTC(currentTimestamp()) == toTimestamp('2050-12-12 19:18:12') -> false
  • fromUTC(currentTimestamp(), 'Asia/Seoul') != toTimestamp('2050-12-12 19:18:12') -> true

G

greater

greater(<value1> : any, <value2> : any) => boolean

Utilise l’opérateur de comparaison « Supérieur ». Identique à l’opérateur >.

  • greater(12, 24) -> false
  • ('dumbo' > 'dum') -> true
  • (toTimestamp('2019-02-05 08:21:34.890', 'yyyy-MM-dd HH:mm:ss.SSS') > toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS')) -> true

greaterOrEqual

greaterOrEqual(<value1> : any, <value2> : any) => boolean

Utilise l’opérateur de comparaison « Supérieur ou égal à ». Identique à l’opérateur >=.

  • greaterOrEqual(12, 12) -> true
  • ('dumbo' >= 'dum') -> true

greatest

greatest(<value1> : any, ...) => any

Retourne la valeur la plus élevée parmi la liste des valeurs en tant qu’entrée, en ignorant les valeurs Null. Retourne null si toutes les entrées sont null.

  • greatest(10, 30, 15, 20) -> 30
  • greatest(10, toInteger(null), 20) -> 20
  • greatest(toDate('2010-12-12'), toDate('2011-12-12'), toDate('2000-12-12')) -> toDate('2011-12-12')
  • greatest(toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS'), toTimestamp('2019-02-05 08:21:34.890', 'yyyy-MM-dd HH:mm:ss.SSS')) -> toTimestamp('2019-02-05 08:21:34.890', 'yyyy-MM-dd HH:mm:ss.SSS')

H

hasColumn

hasColumn(<column name> : string, [<stream name> : string]) => boolean

Vérifie une valeur de colonne par son nom dans le flux de données. Vous pouvez transmettre un nom de flux facultatif en tant que deuxième argument. Adressez les noms de colonnes connus au moment du design par leurs noms. Les entrées calculées ne sont pas prises en charge, mais vous pouvez utiliser des substitutions de paramètres.

  • hasColumn('parent')

hasError

hasError([<value1> : string]) => boolean

Vérifie si l’actif avec ID fourni est marqué comme erreur.

Examples

  • hasError('assert1')
  • hasError('assert2')

hasPath

hasPath(<value1> : string, [<streamName> : string]) => boolean

Vérifie s’il existe un certain chemin d’accès hiérarchique par nom dans le flux. Vous pouvez transmettre un nom de flux facultatif en tant que deuxième argument. Les noms/chemins de colonnes connus au moment du design doivent être traités uniquement à l’aide de leur nom ou de leur chemin de notation par points. Les entrées calculées ne sont pas prises en charge, mais vous pouvez utiliser des substitutions de paramètres.

  • hasPath('grandpa.parent.child') => boolean

hex

hex(<value1>: binary) => string

Renvoie une représentation sous forme de chaîne hexadécimale d'une valeur binaire

  • hex(toBinary([toByte(0x1f), toByte(0xad), toByte(0xbe)])) -> '1fadbe'

hour

hour(<value1> : timestamp, [<value2> : string]) => integer

Obtient la valeur d’heure d’un horodatage. Vous pouvez passer un fuseau horaire facultatif sous la forme , GMTPSTou UTCAmerica/Cayman. Le fuseau horaire local est utilisé comme valeur par défaut. Reportez-vous à la classe SimpleDateFormat de Java pour connaître les formats disponibles.

  • hour(toTimestamp('2009-07-30 12:58:59')) -> 12
  • hour(toTimestamp('2009-07-30 12:58:59'), 'PST') -> 12

hours

hours(<value1> : integer) => long

Obtient la durée en millisecondes pour le nombre d’heures.

  • hours(2) -> 7200000L

I

iif

iif(<condition> : boolean, <true_expression> : any, [<false_expression> : any]) => any

Applique une valeur ou l’autre en fonction d’une condition. Si l’autre n’est pas spécifié, la valeur est considérée NULL. Les deux valeurs doivent être compatibles (telles que numérique et chaîne).

  • iif(10 + 20 == 30, 'dumbo', 'gumbo') -> 'dumbo'
  • iif(10 > 30, 'dumbo', 'gumbo') -> 'gumbo'
  • iif(month(toDate('2018-12-01')) == 12, 345.12, 102.67) -> 345.12

iifNull

iifNull(<value1> : any, [<value2> : any], ...) => any

Retourne le premier élément non null lorsqu’il reçoit deux entrées ou plus. Cette fonction est équivalente à la coalesce fonction.

  • iifNull(10, 20) -> 10
  • iifNull(null, 20, 40) -> 20
  • iifNull('azure', 'data', 'factory') -> 'azure'
  • iifNull(null, 'data', 'factory') -> 'data'

in

in(<array of items> : array, <item to find> : any) => boolean

Vérifie si un élément se trouve dans le tableau.

  • in([10, 20, 30], 10) -> true
  • in(['good', 'kid'], 'bad') -> false

initCap

initCap(<value1> : string) => string

Convertit la première lettre de chaque mot en majuscules. Les mots sont identifiés comme étant séparés par des espaces blancs.

  • initCap('cool iceCREAM') -> 'Cool Icecream'

instr

instr(<string> : string, <substring to find> : string) => integer

Recherche la position (de base 1) de la sous-chaîne au sein d’une chaîne. S’il est introuvable, 0 est retourné.

  • instr('dumbo', 'mbo') -> 3
  • instr('microsoft', 'o') -> 5
  • instr('good', 'bad') -> 0

intersect

intersect(<value1> : array, <value2> : array) => array

Retourne un ensemble d’intersection d’éléments distincts depuis 2 tableaux.

  • intersect([10, 20, 30], [20, 40]) => [20]

isBitSet

isBitSet (<value1> : array, <value2>:integer ) => boolean

Vérifie si une position de bits est définie dans ce bitset.

  • isBitSet(toBitSet([10, 32, 98]), 10) => true

isBoolean

isBoolean(<value1>: string) => boolean

Vérifie si la valeur de chaîne est une valeur booléenne en fonction des règles de toBoolean().

  • isBoolean('true') -> true
  • isBoolean('no') -> true
  • isBoolean('microsoft') -> false

isByte

isByte(<value1> : string) => boolean

Vérifie si la valeur de chaîne est une valeur d’octet lorsqu’elle est donnée à un format facultatif en fonction des règles de toByte().

  • isByte('123') -> true
  • isByte('chocolate') -> false

isDate

isDate (<value1> : string, [<format>: string]) => boolean

Vérifie si la chaîne de date d’entrée est une date à l’aide d’un format de date d’entrée facultatif. Reportez-vous à la classe SimpleDateFormat de Java pour connaître les formats disponibles. Si le format de date d’entrée est omis, le format par défaut est yyyy-[M]M-[d]d. Les formats acceptés sont :[ yyyy, yyyy-[M]M, yyyy-[M]M-[d]d, yyyy-[M]M-[d]dT* ].

  • isDate('2012-8-18') -> true
  • isDate('12/18--234234' -> 'MM/dd/yyyy') -> false

isDecimal

isDecimal (<value1> : string) => boolean

Vérifie si la valeur de chaîne est une valeur décimale lorsqu’elle reçoit un format facultatif conformément aux règles de toDecimal().

  • isDecimal('123.45') -> true
  • isDecimal('12/12/2000') -> false

isDelete

isDelete([<value1> : integer]) => boolean

Vérifie si la ligne doit être supprimée. Pour les transformations qui prennent plusieurs flux d’entrée, vous pouvez passer l’index (basé sur 1) du flux. L’index de flux doit être soit 1 ou 2, et la valeur par défaut est 1.

  • isDelete()
  • isDelete(1)

isDistinct

isDistinct(<value1> : any , <value1> : any) => boolean

Détermine si une colonne ou un ensemble de colonnes est distinct. Elle ne compte pas null comme valeur distincte.

  • isDistinct(custId, custName) => boolean

isDouble

isDouble (<value1> : string, [<format>: string]) => boolean

Vérifie si la valeur de chaîne est une valeur double lorsqu’elle est donnée à un format facultatif en fonction des règles de toDouble().

  • isDouble('123') -> true
  • isDouble('$123.45' -> '$###.00') -> true
  • isDouble('icecream') -> false

isError

isError([<value1> : integer]) => boolean

Vérifie si la ligne est marquée comme une erreur. Pour les transformations qui prennent plusieurs flux d’entrée, vous pouvez passer l’index (basé sur 1) du flux. L’index de flux doit être l’un 1 ou l’autre 2 et la valeur par défaut est 1.

  • isError()
  • isError(1)

isFloat

isFloat (<value1> : string, [<format>: string]) => boolean

Vérifie si la valeur de chaîne est une valeur float lorsqu’elle reçoit un format facultatif en fonction des règles de toFloat().

  • isFloat('123') -> true
  • isFloat('$123.45' -> '$###.00') -> true
  • isFloat('icecream') -> false

isIgnore

isIgnore([<value1> : integer]) => boolean

Vérifie si la ligne doit être ignorée. Pour les transformations qui prennent plusieurs flux d’entrée, vous pouvez passer l’index (basé sur 1) du flux. L’index de flux doit être soit 1 ou 2, et la valeur par défaut est 1.

  • isIgnore()
  • isIgnore(1)

isInsert

isInsert([<value1> : integer]) => boolean

Vérifie si la ligne est marquée pour l’insertion. Pour les transformations qui prennent plusieurs flux d’entrée, vous pouvez passer l’index (basé sur 1) du flux. L’index de flux doit être soit 1 ou 2, et la valeur par défaut est 1.

  • isInsert()
  • isInsert(1)

isInteger

isInteger (<value1> : string, [<format>: string]) => boolean

Vérifie si la valeur de chaîne est une valeur entière lorsqu’elle est donnée à un format facultatif en fonction des règles de toInteger().

  • isInteger('123') -> true
  • isInteger('$123' -> '$###') -> true
  • isInteger('microsoft') -> false

isLong

isLong (<value1> : string, [<format>: string]) => boolean

Vérifie si la valeur de chaîne est une valeur longue lorsqu’elle est donnée à un format facultatif en fonction des règles de toLong().

  • isLong('123') -> true
  • isLong('$123' -> '$###') -> true
  • isLong('gunchus') -> false

isMatch

isMatch([<value1> : integer]) => boolean

Vérifie si la ligne correspond à la recherche. Pour les transformations qui prennent plusieurs flux d’entrée, vous pouvez passer l’index (basé sur 1) du flux. L’index de flux doit être soit 1 ou 2, et la valeur par défaut est 1.

  • isMatch()
  • isMatch(1)

isNan

isNan (<value1> : integral) => boolean

Vérifie si la valeur n’est pas un nombre.

  • isNan(10.2) => false

isNull

isNull(<value1> : any) => boolean

Vérifie si la valeur est NULL.

  • isNull(NULL()) -> true
  • isNull('') -> false

isShort

isShort (<value1> : string, [<format>: string]) => boolean

Vérifie si la valeur de chaîne est une valeur courte lorsqu’elle est donnée à un format facultatif en fonction des règles de toShort().

  • isShort('123') -> true
  • isShort('$123' -> '$###') -> true
  • isShort('microsoft') -> false

isTimestamp

isTimestamp (<value1> : string, [<format>: string]) => boolean

Vérifie si la chaîne de date d’entrée est un horodatage à l’aide d’un format d’horodatage d’entrée facultatif. Reportez-vous à la classe SimpleDateFormat de Java pour connaître les formats disponibles. Si l’horodatage est omis, le modèle yyyy-[M]M-[d]d hh:mm:ss[.f...] par défaut est utilisé. Vous pouvez passer un fuseau horaire facultatif sous la forme , GMTPSTou UTCAmerica/Cayman. La fonction timestamp prend en charge une précision allant jusqu'à la milliseconde avec une valeur de 999. Reportez-vous à la classe SimpleDateFormat de Java pour connaître les formats disponibles.

  • isTimestamp('2016-12-31 00:12:00') -> true
  • isTimestamp('2016-12-31T00:12:00' -> 'yyyy-MM-dd\\'T\\'HH:mm:ss' -> 'PST') -> true
  • isTimestamp('2012-8222.18') -> false

isUpdate

isUpdate([<value1> : integer]) => boolean

Vérifie si la ligne est marquée pour la mise à jour. Pour les transformations qui prennent plusieurs flux d’entrée, vous pouvez passer l’index (basé sur 1) du flux. L’index de flux doit être soit 1 ou 2, et la valeur par défaut est 1.

  • isUpdate()
  • isUpdate(1)

isUpsert

isUpsert([<value1> : integer]) => boolean

Vérifie si la ligne est marquée pour l’insertion. Pour les transformations qui prennent plusieurs flux d’entrée, vous pouvez passer l’index (basé sur 1) du flux. L’index de flux doit être soit 1 ou 2, et la valeur par défaut est 1.

  • isUpsert()
  • isUpsert(1)

J

jaroWinkler

jaroWinkler(<value1> : string, <value2> : string) => double

Obtient la distance JaroWinkler entre deux chaînes.

  • jaroWinkler('frog', 'frog') => 1.0

K

keyValues

keyValues(<value1> : array, <value2> : array) => map

Crée un mappage de clés/valeurs. Le premier paramètre est un tableau de clés, et le second est le tableau de valeurs. Les deux tableaux doivent avoir la même longueur.

  • keyValues(['bojjus', 'appa'], ['gunchus', 'ammi']) => ['bojjus' -> 'gunchus', 'appa' -> 'ammi']

kurtosis

kurtosis(<value1> : number) => double

Obtient l’aplatissement d’une colonne.

  • kurtosis(sales)

kurtosisIf

kurtosisIf(<value1> : boolean, <value2> : number) => double

Obtient l’aplatissement d’une colonne selon certains critères.

  • kurtosisIf(region == 'West', sales)

L

lag

lag(<value> : any, [<number of rows to look before> : number], [<default value> : any]) => any

Obtient la valeur du premier paramètre évalué n les lignes avant la ligne actuelle. Le deuxième paramètre est le nombre de lignes à examiner et la valeur par défaut est 1. S’il n’y a pas autant de lignes, une valeur null est retournée, sauf si une valeur par défaut est spécifiée.

  • lag(amount, 2)
  • lag(amount, 2000, 100)

last

last(<value1> : any, [<value2> : boolean]) => any

Obtient la dernière valeur d’un groupe de colonnes. Si le deuxième paramètre ignoreNulls est omis, il est supposé false.

  • last(sales)
  • last(sales, false)

lastDayOfMonth

lastDayOfMonth(<value1> : datetime) => date

Obtient le dernier jour du mois lorsqu’une date est donnée.

  • lastDayOfMonth(toDate('2009-01-12')) -> toDate('2009-01-31')

lead

lead(<value> : any, [<number of rows to look after> : number], [<default value> : any]) => any

Obtient la valeur du premier paramètre évalué après n lignes suivant la ligne actuelle. Le deuxième paramètre est le nombre de lignes à regarder vers l’avant, et la valeur par défaut est 1. S’il n’y a pas autant de lignes, une valeur null est retournée, sauf si une valeur par défaut est spécifiée.

  • lead(amount, 2)
  • lead(amount, 2000, 100)

least

least(<value1> : any, ...) => any

Utilise l’opérateur de comparaison « Inférieur ou égal à ». Identique à l’opérateur <=.

  • least(10, 30, 15, 20) -> 10
  • least(toDate('2010-12-12'), toDate('2011-12-12'), toDate('2000-12-12')) -> toDate('2000-12-12')

left

left(<string to subset> : string, <number of characters> : integral) => string

Extrait une sous-chaîne commençant à l’index 1 avec le nombre de caractères. Identique à SUBSTRING(str, 1, n).

  • left('bojjus', 2) -> 'bo'
  • left('bojjus', 20) -> 'bojjus'

length

length(<value1> : string) => integer

Retourne la longueur de la chaîne.

  • length('dumbo') -> 5

lesser

lesser(<value1> : any, <value2> : any) => boolean

Utilise l’opérateur de comparaison « Inférieur à ». Identique à l’opérateur <.

  • lesser(12, 24) -> true
  • ('abcd' < 'abc') -> false
  • (toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS') < toTimestamp('2019-02-05 08:21:34.890', 'yyyy-MM-dd HH:mm:ss.SSS')) -> true

lesserOrEqual

lesserOrEqual(<value1> : any, <value2> : any) => boolean

Utilise l’opérateur de comparaison « Inférieur ou égal à ». Identique à l’opérateur <=.

  • lesserOrEqual(12, 12) -> true
  • ('dumbo' <= 'dum') -> false

levenshtein

levenshtein(<from string> : string, <to string> : string) => integer

Obtient la distance levenshtein entre deux chaînes.

  • levenshtein('boys', 'girls') -> 4

like

like(<string> : string, <pattern match> : string) => boolean

Utilise un motif de chaîne qui est mis en correspondance littéralement. Les exceptions sont les symboles spéciaux suivants : _ correspond à n’importe quel caractère de l’entrée (similaire à .* dans les posix expressions régulières). % correspond à zéro ou plusieurs caractères dans l’entrée (comme .* dans les posix expressions régulières). Le caractère d’échappement est « '' ». Si un caractère d’échappement précède un caractère spécial ou un autre caractère d’échappement, le caractère qui suit a une correspondance littérale. Aucun autre caractère ne peut être échappé.

  • like('icecream', 'ice%') -> true

locate

locate(<substring to find> : string, <string> : string, [<from index - 1-based> : integral]) => integer

Recherche la position (basée sur 1) de la sous-chaîne dans une chaîne commençant à une certaine position. Si la position est omise, elle commence à partir du début de la chaîne. S’il est introuvable, 0 est retourné.

  • locate('mbo', 'dumbo') -> 3
  • locate('o', 'microsoft', 6) -> 7
  • locate('bad', 'good') -> 0

log

log(<value1> : number, [<value2> : number]) => double

Calcule la valeur logarithmique. Vous pouvez fournir une base facultative ou un numéro Euler si utilisé.

  • log(100, 10) -> 2

log10

log10(<value1> : number) => double

Calcule la valeur du logarithme en base 10.

  • log10(100) -> 2

lookup

lookup(key, key2, ...) => complex[]

Recherche la première ligne du récepteur mis en cache en utilisant les clés spécifiées qui correspondent aux clés du récepteur mis en cache.

  • cacheSink#lookup(movieId)

lower

lower(<value1> : string) => string

Convertit une chaîne en minuscules.

  • lower('GunChus') -> 'gunchus'

lpad

lpad(<string to pad> : string, <final padded length> : integral, <padding> : string) => string

Décale la chaîne sur la gauche selon la marge intérieure fournie, jusqu’à ce que la chaîne atteigne une certaine longueur. Si la longueur de la chaîne est supérieure ou égale à cette longueur, la chaîne est tronquée à la longueur.

  • lpad('dumbo', 10, '-') -> '-----dumbo'
  • lpad('dumbo', 4, '-') -> 'dumb'

ltrim

ltrim(<string to trim> : string, [<trim characters> : string]) => string

Supprime une chaîne de caractères de début situés sur la gauche. Si le deuxième paramètre n’est pas spécifié, il supprime les espaces blancs. Sinon, il supprime tout caractère spécifié dans le deuxième paramètre.

  • ltrim(' dumbo ') -> 'dumbo '
  • ltrim('!--!du!mbo!', '-!') -> 'du!mbo!'

M

map

map(<value1> : array, <value2> : unaryfunction) => any

Mappe chaque élément du tableau à un nouvel élément à l’aide de l’expression fournie. La fonction map attend une référence à un élément dans la fonction d’expression comme #item.

  • map([1, 2, 3, 4], #item + 2) -> [3, 4, 5, 6]
  • map(['a', 'b', 'c', 'd'], #item + '_processed') -> ['a_processed', 'b_processed', 'c_processed', 'd_processed']

mapAssociation

mapAssociation(<value1> : map, <value2> : binaryFunction) => array

Transforme une carte en associant les clés aux nouvelles valeurs. Retourne un tableau. Il prend une fonction de mappage où vous pouvez traiter l’élément en tant que #key et la valeur actuelle en tant que #value.

  • mapAssociation(['bojjus' -> 'gunchus', 'appa' -> 'ammi'], @(key = #key, value = #value)) => [@(key = 'bojjus', value = 'gunchus'), @(key = 'appa', value = 'ammi')]

mapIf

mapIf (<value1> : array, <value2> : binaryfunction, <value3>: binaryFunction) => any

Mappe de manière conditionnelle un tableau à un autre tableau de la même longueur ou plus petite. Les valeurs peuvent être de n’importe quel type de données, y compris structTypes. Il prend une fonction de mappage où vous pouvez traiter l’élément dans le tableau en tant que #item et l’index actuel en tant que #index. Pour les cartes profondément imbriquées, vous pouvez faire référence aux cartes parentes à l’aide de la notation « #item_[n] (#item_1, #index_1 »..

  • mapIf([10, 20, 30], #item > 10, #item + 5) -> [25, 35]
  • mapIf(['icecream', 'cake', 'soda'], length(#item) > 4, upper(#item)) -> ['ICECREAM', 'CAKE']

mapIndex

mapIndex(<value1> : array, <value2> : binaryfunction) => any

Mappe chaque élément du tableau à un nouvel élément à l’aide de l’expression fournie. La map fonction attend une référence à un élément dans la fonction d’expression en tant que #item et une référence à l’index d’élément en tant que #index.

  • mapIndex([1, 2, 3, 4], #item + 2 + #index) -> [4, 6, 8, 10]

mapLoop

mapLoop(<value1> : integer, <value2> : unaryfunction) => any

Boucle de 1 à la longueur définie pour créer un tableau de cette longueur. Il prend une fonction de mappage où vous pouvez traiter l’index dans le tableau en tant que #index. Pour les cartes profondément imbriquées, vous pouvez faire référence aux cartes parentes à l’aide de la #index_n notation (#index_1, #index_2).

  • mapLoop(3, #index * 10) -> [10, 20, 30]

max

max(<value1> : any) => any

Obtient la valeur maximale d’une colonne.

  • max(sales)

maxIf

maxIf(<value1> : boolean, <value2> : any) => any

Obtient la valeur maximale d’une colonne, en fonction des critères.

  • maxIf(region == 'West', sales)

md5

md5(<value1> : any, ...) => string

Calcule la synthèse MD5 d’un ensemble de colonnes de différents types de données primitifs et retourne une chaîne hexadécimal de 32 caractères. Vous pouvez l’utiliser pour calculer une empreinte digitale pour une ligne.

  • md5(5, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> '4ce8a880bd621a1ffad0bca905e1bc5a'

mean

mean(<value1> : number) => number

Obtient la moyenne des valeurs d’une colonne. Identique à AVG.

  • mean(sales)

meanIf

meanIf(<value1> : boolean, <value2> : number) => number

Obtient la moyenne des valeurs d’une colonne, en fonction des critères. Identique à avgIf.

  • meanIf(region == 'West', sales)

millisecond

millisecond(<value1> : timestamp, [<value2> : string]) => integer

Obtient la valeur en millisecondes d'une date. Vous pouvez passer un fuseau horaire facultatif sous la forme , GMTPSTou UTCAmerica/Cayman. Le fuseau horaire local est utilisé comme valeur par défaut. Reportez-vous à la classe SimpleDateFormat de Java pour connaître les formats disponibles.

  • millisecond(toTimestamp('2009-07-30 12:58:59.871', 'yyyy-MM-dd HH:mm:ss.SSS')) -> 871

milliseconds

milliseconds(<value1> : integer) => long

Obtient la durée en millisecondes pour le nombre de millisecondes.

  • milliseconds(2) -> 2L

min

min(<value1> : any) => any

Obtient la valeur minimale d’une colonne.

  • min(sales)

minIf

minIf(<value1> : boolean, <value2> : any) => any

Obtient la valeur minimale d’une colonne, en fonction des critères.

  • minIf(region == 'West', sales)

minus

minus(<value1> : any, <value2> : any) => any

Soustrait des nombres. Soustrait le nombre de jours à partir d'une date. Soustrait la durée d’un horodatage. Soustraire deux horodatages afin d'obtenir la différence en millisecondes. Identique à l’opérateur -.

  • minus(20, 10) -> 10
  • 20 - 10 -> 10
  • minus(toDate('2012-12-15'), 3) -> toDate('2012-12-12')
  • toDate('2012-12-15') - 3 -> toDate('2012-12-12')
  • toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS') + (days(1) + hours(2) - seconds(10)) -> toTimestamp('2019-02-04 07:19:18.871', 'yyyy-MM-dd HH:mm:ss.SSS')
  • toTimestamp('2019-02-03 05:21:34.851', 'yyyy-MM-dd HH:mm:ss.SSS') - toTimestamp('2019-02-03 05:21:36.923', 'yyyy-MM-dd HH:mm:ss.SSS') -> -2072

minute

minute(<value1> : timestamp, [<value2> : string]) => integer

Obtient la valeur des minutes d’un horodatage. Vous pouvez passer un fuseau horaire facultatif sous la forme , GMTPSTou UTCAmerica/Cayman. Le fuseau horaire local est utilisé comme valeur par défaut. Reportez-vous à la classe SimpleDateFormat de Java pour connaître les formats disponibles.

  • minute(toTimestamp('2009-07-30 12:58:59')) -> 58
  • minute(toTimestamp('2009-07-30 12:58:59'), 'PST') -> 58

minutes

minutes(<value1> : integer) => long

Obtient la durée en millisecondes pour un nombre donné de minutes.

  • minutes(2) -> 120000L

mlookup

mlookup(key, key2, ...) => complex[]

Recherche toutes les lignes correspondantes du récepteur mis en cache en utilisant les clés spécifiées qui correspondent aux clés du récepteur mis en cache.

  • cacheSink#mlookup(movieId)

mod

mod(<value1> : any, <value2> : any) => any

Obtient le module d’une paire de nombres. Identique à l’opérateur %.

  • mod(20, 8) -> 4
  • 20 % 8 -> 4

month

month(<value1> : datetime) => integer

Obtient la valeur de mois d’une date ou d’un horodatage.

  • month(toDate('2012-8-8')) -> 8

monthsBetween

monthsBetween(<from date/timestamp> : datetime, <to date/timestamp> : datetime, [<roundoff> : boolean], [<time zone> : string]) => double

Obtient le nombre de mois entre deux dates. Vous pouvez arrondir le calcul. Vous pouvez passer un fuseau horaire facultatif sous la forme , GMTPSTou UTCAmerica/Cayman. Le fuseau horaire local est utilisé comme valeur par défaut. Reportez-vous à la classe SimpleDateFormat de Java pour connaître les formats disponibles.

  • monthsBetween(toTimestamp('1997-02-28 10:30:00'), toDate('1996-10-30')) -> 3.94959677

multiply

multiply(<value1> : any, <value2> : any) => any

Multiplie une paire de nombres. Identique à l’opérateur *.

  • multiply(20, 10) -> 200
  • 20 * 10 -> 200

N

negate

negate(<value1> : number) => number

Inverse un nombre. Transforme les nombres positifs en nombres négatifs, et vice versa.

  • negate(13) -> -13

nextSequence

nextSequence() => long

Retourne la séquence unique suivante. Le nombre est consécutif uniquement dans une partition et est précédé de l’ID de partition.

  • nextSequence() == 12313112 -> false

normalize

normalize(<String to normalize> : string) => string

Normalise la valeur de chaîne pour séparer les caractères Unicode accentués.

  • regexReplace(normalize('bo²s'), `\p{M}`, '') -> 'boys'

not

not(<value1> : boolean) => boolean

Utilise l’opérateur de négation logique.

  • not(true) -> false
  • not(10 == 20) -> true

notEquals

notEquals(<value1> : any, <value2> : any) => boolean

Utilise l’opérateur de comparaison « N’est pas égal à ». Identique à l’opérateur !=.

  • 12 != 24 -> true
  • 'bojjus' != 'bo' + 'jjus' -> false

nTile

nTile([<value1> : integer]) => integer

La nTile fonction divise les lignes de chaque partition de fenêtre en n compartiments allant du 1 au plus n. Les valeurs des compartiments diffèrent au maximum de 1. Si les lignes de la partition ne sont pas réparties de façon uniforme dans les compartiments, les valeurs restantes sont distribuées une par une dans chaque compartiment, en commençant par le premier compartiment. La fonction nTile est utile pour le calcul des tertiles, quartiles, déciles et autres statistiques de synthèse courantes. La fonction calcule deux variables pendant l’initialisation. Aucune ligne supplémentaire n’est ajoutée à la taille d’un compartiment habituel. Les deux variables sont basées sur la taille de la partition actuelle. Pendant le processus de calcul, la fonction effectue le suivi du numéro de ligne actuel, du numéro de compartiment actuel et du numéro de ligne auquel le compartiment change (bucketThreshold). Lorsque le numéro de ligne actuel atteint le seuil de compartiment, la valeur du compartiment augmente d’une unité. Le seuil augmente par la taille du compartiment (plus un supplémentaire si le compartiment actuel est rembourré).

  • nTile()
  • nTile(numOfBuckets)

null

null() => null

Retourne une valeur NULL. Utilisez la fonction syntax(null()) si une colonne est nommée null. Toute opération qui utilise null génère une NULL valeur.

  • isNull('dumbo' + `null`) -> true
  • isNull(10 * `null`) -> true
  • isNull('') -> false
  • isNull(10 + 20) -> false
  • isNull(10/0) -> true

O

or

or(<value1> : boolean, <value2> : boolean) => boolean

Utilise l’opérateur logique OR . Identique à ||.

  • or(true, false) -> true
  • true || false -> true

originColumns

originColumns(<streamName> : string) => any

Obtient toutes les colonnes de sortie pour un flux d’origine où des colonnes ont été créées. Se place au sein d’une autre fonction.

  • array(toString(originColumns('source1')))

output

output() => any

Retourne la première ligne des résultats du récepteur de cache.

  • cacheSink#output()

outputs

output() => any

Retourne la totalité des lignes de sortie des résultats du récepteur de cache.

  • cacheSink#outputs()

P

partitionId

partitionId() => integer

Retourne l'ID actuel de partition dans lequel se trouve la ligne d’entrée.

  • partitionId()

pMod

pMod(<value1> : any, <value2> : any) => any

Donne les modulus positifs d’une paire de nombres.

  • pmod(-20, 8) -> 4

power

power(<value1> : number, <value2> : number) => double

Élève un nombre à la puissance d’un autre nombre.

  • power(10, 2) -> 100

R

radians

radians(<value1> : number) => double

Convertit les degrés en radians.

  • radians(180) => 3.141592653589793

random

random(<value1> : integral) => double

Retourne un nombre aléatoire lorsqu’une valeur initiale est donnée dans une partition. La valeur initiale doit être une valeur fixe et est utilisée avec l’ID de partition pour produire des valeurs aléatoires dans une plage (0.0-1.0).

  • random(1) == 1 -> false

rank

rank() => integer

Calcule le rang d’une valeur dans un groupe de valeurs spécifiées dans la clause ORDER BY d’une fenêtre. Le résultat est égal à 1 plus le nombre de lignes précédant ou correspondant à la ligne actuelle dans l’ordre de la partition. Les valeurs produisent des écarts dans la séquence. La rank fonction fonctionne même lorsque les données ne sont pas triées et recherchent la modification des valeurs.

  • rank()

reassociate

reassociate(<value1> : map, <value2> : binaryFunction) => map

Transforme une carte en associant les clés aux nouvelles valeurs. Il prend une fonction de mappage où vous pouvez traiter l’élément en tant que #key et la valeur actuelle en tant que #value.

  • reassociate(['fruit' -> 'apple', 'vegetable' -> 'tomato'], substring(#key, 1, 1) + substring(#value, 1, 1)) => ['fruit' -> 'fa', 'vegetable' -> 'vt']

reduce

reduce(<value1> : array, <value2> : any, <value3> : binaryfunction, <value4> : unaryfunction) => any

Accumule des éléments dans un tableau. La fonction reduce requiert une référence à un accumulateur et un élément en tant que fonction d'expression initiale, représentés par #acc et #item. La valeur résultante, #result, est censée être utilisée dans la deuxième fonction d’expression.

  • toString(reduce(['1', '2', '3', '4'], '0', #acc + #item, #result)) -> '01234'

regexExtract

regexExtract(<string> : string, <regex to find> : string, [<match group 1-based index> : integral]) => string

Extrait une sous-chaîne correspondante pour un modèle regex donné. Le dernier paramètre identifie le groupe de correspondances et par défaut il est défini à 1 s'il est omis. Utilise <regex> pour rechercher une chaîne sans séquence d’échappement. L’index 0 retourne toutes les correspondances. Sans groupes de correspondance, les indices 1 et supérieurs ne renvoient aucun résultat.

  • regexExtract('Cost is between 600 and 800 dollars', '(\\d+) and (\\d+)', 2) -> '800'
  • regexExtract('Cost is between 600 and 800 dollars', `(\d+) and (\d+)`, 2) -> '800'

regexMatch

regexMatch(<string> : string, <regex to match> : string) => boolean

Vérifie si la chaîne correspond au modèle d’expression régulière donné. Utilise <regex> pour rechercher une chaîne sans séquence d’échappement.

  • regexMatch('200.50', '(\\d+).(\\d+)') -> true
  • regexMatch('200.50', `(\d+).(\d+)`) -> true

regexReplace

regexReplace(<string> : string, <regex to find> : string, <substring to replace> : string) => string

Remplace toutes les occurrences d’un modèle regex par une autre sous-chaîne dans la chaîne spécifique. Utilise <regex> pour rechercher une chaîne sans séquence d’échappement.

  • regexReplace('100 and 200', '(\\d+)', 'bojjus') -> 'bojjus and bojjus'
  • regexReplace('100 and 200', `(\d+)`, 'gunchus') -> 'gunchus and gunchus'

regexSplit

regexSplit(<string to split> : string, <regex expression> : string) => array

Fractionne une chaîne selon un délimiteur basé sur une expression régulière et retourne un tableau de chaînes.

  • regexSplit('bojjusAgunchusBdumbo', `[CAB]`) -> ['bojjus', 'gunchus', 'dumbo']
  • regexSplit('bojjusAgunchusBdumboC', `[CAB]`) -> ['bojjus', 'gunchus', 'dumbo', '']
  • (regexSplit('bojjusAgunchusBdumboC', `[CAB]`)[1]) -> 'bojjus'
  • isNull(regexSplit('bojjusAgunchusBdumboC', `[CAB]`)[20]) -> true

replace

replace(<string> : string, <substring to find> : string, [<substring to replace> : string]) => string

Remplace toutes les occurrences d’une sous-chaîne par une autre sous-chaîne dans la chaîne spécifique. Si le dernier paramètre est omis, il est défini par défaut sur une chaîne vide.

  • replace('doggie dog', 'dog', 'cat') -> 'catgie cat'
  • replace('doggie dog', 'dog', '') -> 'gie '
  • replace('doggie dog', 'dog') -> 'gie '

reverse

reverse(<value1> : string) => string

Inverse une chaîne.

  • reverse('gunchus') -> 'suhcnug'

right(<string to subset> : string, <number of characters> : integral) => string

Extrait une sous-chaîne comportant un certain nombre de caractères en partant de la droite. Identique à SUBSTRING(str, LENGTH(str) - n, n).

  • right('bojjus', 2) -> 'us'
  • right('bojjus', 20) -> 'bojjus'

rlike

rlike(<string> : string, <pattern match> : string) => boolean

Vérifie si la chaîne correspond au modèle d’expression régulière donné.

  • rlike('200.50', `(\d+).(\d+)`) -> true
  • rlike('bogus', `M[0-9]+.*`) -> false

round

round(<number> : number, [<scale to round> : number], [<rounding option> : integral]) => double

Arrondit un nombre en fonction d’une échelle facultative et d’un mode d’arrondi facultatif. Si l’échelle est omise, elle a la valeur par défaut 0. Si le mode est omis, il est défini par défaut sur ROUND_HALF_UP(5). Les valeurs de l’arrondi incluent :

  1. ROUND_UP : mode arrondi pour arrondir vers le haut.

  2. ROUND_DOWN : mode arrondi pour arrondir vers zéro.

  3. ROUND_CEILING: mode arrondi pour arrondir vers l’infini positif. (Identique à ROUND_UP si l’entrée est positive. S’il est négatif, il se comporte comme ROUND_DOWN. Par exemple, -1.1 serait -1.0 avec ROUND_CEILING et -2 avec ROUND_UP.)

  4. ROUND_FLOOR: mode arrondi pour arrondir vers l’infini négatif. (Identique à ROUND_DOWN si l’entrée est positive. S’il est négatif, il se comporte comme ROUND_UP.)

  5. ROUND_HALF_UP: mode arrondi pour arrondir vers le « voisin le plus proche », sauf si les deux voisins sont équidistants, auquel cas il se comporte comme ROUND_UP. (Plus courant + valeur par défaut pour Dataflow.)

  6. ROUND_HALF_DOWN: mode arrondi pour arrondir vers le « voisin le plus proche », sauf si les deux voisins sont équidistants, auquel cas ROUND_DOWN.

  7. ROUND_HALF_EVEN : mode arrondi pour arrondir vers le « plus proche voisin », sauf si les deux voisins sont équidistants, auquel cas, arrondit vers le voisin pair.

  8. ROUND_UNNECESSARY : mode arrondi pour affirmer que l’opération arrondie a un résultat exact. Par conséquent, aucun arrondi n’est nécessaire.

    • round(100.123) -> 100.0
    • round(2.5, 0) -> 3.0
    • round(5.3999999999999995, 2, 7) -> 5.40

rowNumber

rowNumber() => integer

Attribue un numérotage séquentiel aux lignes d’une fenêtre en commençant par 1.

  • rowNumber()

rpad

rpad(<string to pad> : string, <final padded length> : integral, <padding> : string) => string

Décale la chaîne sur la droite selon la marge intérieure fournie, jusqu’à ce que la chaîne atteigne une certaine longueur. Si la longueur de la chaîne est supérieure ou égale à cette longueur, la chaîne est tronquée à la longueur.

  • rpad('dumbo', 10, '-') -> 'dumbo-----'
  • rpad('dumbo', 4, '-') -> 'dumb'
  • rpad('dumbo', 8, '<>') -> 'dumbo<><'

rtrim

rtrim(<string to trim> : string, [<trim characters> : string]) => string

Supprime une chaîne de caractères de début situés sur la droite. Si le deuxième paramètre n’est pas spécifié, il supprime les espaces blancs. Sinon, il supprime tout caractère spécifié dans le deuxième paramètre.

  • rtrim(' dumbo ') -> ' dumbo'
  • rtrim('!--!du!mbo!', '-!') -> '!--!du!mbo'

S

second

second(<value1> : timestamp, [<value2> : string]) => integer

Obtient la deuxième valeur d’une date. Vous pouvez passer un fuseau horaire facultatif sous la forme , GMTPSTou UTCAmerica/Cayman. Le fuseau horaire local est utilisé comme valeur par défaut. Reportez-vous à la classe SimpleDateFormat de Java pour connaître les formats disponibles.

  • second(toTimestamp('2009-07-30 12:58:59')) -> 59

seconds

seconds(<value1> : integer) => long

Donne la durée en millisecondes pour un nombre en secondes.

  • seconds(2) -> 2000L

setBitSet

setBitSet (<value1>: array, <value2>:array) => array

Définit les positions de bits dans ce bitset.

  • setBitSet(toBitSet([10, 32]), [98]) => [4294968320L, 17179869184L]

sha1

sha1(<value1> : any, ...) => string

Calcule la synthèse SHA-1 d’un ensemble de colonnes de différents types de données primitifs et retourne une chaîne hexadécimal de 40 caractères. Vous pouvez l’utiliser pour calculer une empreinte digitale pour une ligne.

  • sha1(5, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> '46d3b478e8ec4e1f3b453ac3d8e59d5854e282bb'

sha2

sha2(<value1> : integer, <value2> : any, ...) => string

Calcule la synthèse SHA-2 d’un ensemble de colonnes de types de données primitifs variables en fonction d’une longueur de bits, qui ne peut être que de valeurs 0(256), , 224, 256384et 512. Vous pouvez l’utiliser pour calculer une empreinte digitale pour une ligne.

  • sha2(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> 'afe8a553b1761c67d76f8c31ceef7f71b66a1ee6f4e6d3b5478bf68b47d06bd3'

sin

sin(<value1> : number) => double

Calcule une valeur de sinus.

  • sin(2) -> 0.9092974268256817

sinh

sinh(<value1> : number) => double

Calcule une valeur de sinus hyperbolique.

  • sinh(0) -> 0.0

size

size(<value1> : any) => integer

Recherche la taille d’un tableau ou d’un type de carte.

  • size(['element1', 'element2']) -> 2
  • size([1,2,3]) -> 3

skewness

skewness(<value1> : number) => double

Obtient l’asymétrie d’une colonne.

  • skewness(sales)

skewnessIf

skewnessIf(<value1> : boolean, <value2> : number) => double

Obtient l’asymétrie d’une colonne, selon certains critères.

  • skewnessIf(region == 'West', sales)

slice

slice(<array to slice> : array, <from 1-based index> : integral, [<number of items> : integral]) => array

Extrait un sous-ensemble d’un tableau en partant d’une position. La position est de base 1. Si la longueur est omise, elle est par défaut à la fin de la chaîne.

  • slice([10, 20, 30, 40], 1, 2) -> [10, 20]
  • slice([10, 20, 30, 40], 2) -> [20, 30, 40]
  • slice([10, 20, 30, 40], 2)[1] -> 20
  • isNull(slice([10, 20, 30, 40], 2)[0]) -> true
  • isNull(slice([10, 20, 30, 40], 2)[20]) -> true
  • slice(['a', 'b', 'c', 'd'], 8) -> []

sort

sort(<value1> : array, <value2> : binaryfunction) => array

Trie le tableau à l’aide de la fonction de prédicat fournie. La sort fonction attend une référence à deux éléments consécutifs dans la fonction d’expression en tant que #item1 et #item2.

  • sort([4, 8, 2, 3], compare(#item1, #item2)) -> [2, 3, 4, 8]
  • sort(['a3', 'b2', 'c1'], iif(right(#item1, 1) >= right(#item2, 1), 1, -1)) -> ['c1', 'b2', 'a3']

soundex

soundex(<value1> : string) => string

Obtient le code soundex de la chaîne.

  • soundex('genius') -> 'G520'

split

split(<string to split> : string, <split characters> : string) => array

Fractionne une chaîne selon un délimiteur et retourne un tableau de chaînes.

  • split('bojjus,guchus,dumbo', ',') -> ['bojjus', 'guchus', 'dumbo']
  • split('bojjus,guchus,dumbo', '|') -> ['bojjus,guchus,dumbo']
  • split('bojjus, guchus, dumbo', ', ') -> ['bojjus', 'guchus', 'dumbo']
  • split('bojjus, guchus, dumbo', ', ')[1] -> 'bojjus'
  • isNull(split('bojjus, guchus, dumbo', ', ')[0]) -> true
  • isNull(split('bojjus, guchus, dumbo', ', ')[20]) -> true
  • split('bojjusguchusdumbo', ',') -> ['bojjusguchusdumbo']

sqrt

sqrt(<value1> : number) => double

Calcule la racine carrée d’un nombre.

  • sqrt(9) -> 3

startsWith

startsWith(<string> : string, <substring to check> : string) => boolean

Vérifie si la chaîne commence par la chaîne fournie.

  • startsWith('dumbo', 'du') -> true

stddev

stddev(<value1> : number) => double

Obtient l’écart type d’une colonne.

  • stdDev(sales)

stddevIf

stddevIf(<value1> : boolean, <value2> : number) => double

Obtient l’écart type d’une colonne, en fonction des critères.

  • stddevIf(region == 'West', sales)

stddevPopulation

stddevPopulation(<value1> : number) => double

Obtient l’écart type de remplissage d’une colonne.

  • stddevPopulation(sales)

stddevPopulationIf

stddevPopulationIf(<value1> : boolean, <value2> : number) => double

Obtient l’écart type de population d’une colonne, en fonction des critères.

  • stddevPopulationIf(region == 'West', sales)

stddevSample

stddevSample(<value1> : number) => double

Obtient l’exemple d’écart type d’une colonne.

  • stddevSample(sales)

stddevSampleIf

stddevSampleIf(<value1> : boolean, <value2> : number) => double

Obtient l’exemple d’écart type d’une colonne, en fonction des critères.

  • stddevSampleIf(region == 'West', sales)

subDays

subDays(<date/timestamp> : datetime, <days to subtract> : integral) => datetime

Soustrait des jours d’une date ou d’un horodatage. Identique à l’opérateur - pour la date.

  • subDays(toDate('2016-08-08'), 1) -> toDate('2016-08-07')

subMonths

subMonths(<date/timestamp> : datetime, <months to subtract> : integral) => datetime

Soustrait des mois d’une date ou d’un horodatage.

  • subMonths(toDate('2016-09-30'), 1) -> toDate('2016-08-31')

substring

substring(<string to subset> : string, <from 1-based index> : integral, [<number of characters> : integral]) => string

Extrait une sous-chaîne d’une certaine longueur en partant d’une position. La position est de base 1. Si la longueur est omise, elle est par défaut à la fin de la chaîne.

  • substring('Cat in the hat', 5, 2) -> 'in'
  • substring('Cat in the hat', 5, 100) -> 'in the hat'
  • substring('Cat in the hat', 5) -> 'in the hat'
  • substring('Cat in the hat', 100, 100) -> ''

substringIndex

substringIndex( <chaîne vers sous-ensemble><délimiteur>substringIndex( : chaîne, : chaîne, <nombre d’occurrences du délimiteur> : entier]) => chaîne

Extrait la sous-chaîne avant les occurrences « count » du délimiteur. Si le nombre est positif, tout ce qui se trouve à gauche du dernier délimiteur (en comptant à partir de la gauche) est renvoyé. Si le nombre est négatif, tout ce qui se trouve à droite du dernier délimiteur (en comptant à partir de la droite) est retourné.

  • substringIndex('111-222-333', '-', 1) -> '111'
  • substringIndex('111-222-333', '-', 2) -> '111-222'
  • substringIndex('111-222-333', '-', -1) -> '333'
  • substringIndex('111-222-333', '-', -2) -> '222-333'

sum

sum(<value1> : number) => number

Obtient la somme agrégée d’une colonne numérique.

  • sum(col)

sumDistinct

sumDistinct(<value1> : number) => number

Obtient la somme agrégée de valeurs distinctes appartenant à une colonne numérique.

  • sumDistinct(col)

sumDistinctIf

sumDistinctIf(<value1> : boolean, <value2> : number) => number

Obtient la somme agrégée d’une colonne numérique, en fonction des critères. La condition peut être basée sur n’importe quelle colonne.

  • sumDistinctIf(state == 'CA' && commission < 10000, sales)
  • sumDistinctIf(true, sales)

sumIf

sumIf(<value1> : boolean, <value2> : number) => number

Obtient la somme agrégée d’une colonne numérique, en fonction des critères. La condition peut être basée sur n’importe quelle colonne.

  • sumIf(state == 'CA' && commission < 10000, sales)
  • sumIf(true, sales)

T

tan

tan(<value1> : number) => double

Calcule une valeur de tangente.

  • tan(0) -> 0.0

tanh

tanh(<value1> : number) => double

Calcule une valeur de tangente hyperbolique.

  • tanh(0) -> 0.0

toBase64

toBase64(<value1> : string, <encoding type> : string]) => string

Encode la chaîne spécifique en base64. Vous pouvez éventuellement passer le type d’encodage.

  • toBase64('bojjus') -> 'Ym9qanVz'
  • toBase64('± 25000, € 5.000,- |', 'Windows-1252') -> 'sSAyNTAwMCwggCA1LjAwMCwtIHw='

toBinary

toBinary(<value1> : any) => binary

Convertit n’importe quel nombre numérique, date, horodatage ou chaîne en représentation binaire.

  • toBinary(3) -> [0x11]

toBoolean

toBoolean(<value1> : string) => boolean

Convertit une valeur (t, , true, yyes, 1) en true et (f, false, n, no, 0) en false et NULL pour toute autre valeur.

  • toBoolean('true') -> true
  • toBoolean('n') -> false
  • isNull(toBoolean('truthy')) -> true

toByte

toByte(<value> : any, [<format> : string], [<locale> : string]) => byte

Convertit une valeur numérique ou une chaîne en une valeur de type octet. Vous pouvez utiliser un format décimal Java facultatif pour la conversion.

  • toByte(123)
  • 123
  • toByte(0xFF)
  • -1
  • toByte('123')
  • 123

toDate

toDate(<string> : any, [<date format> : string]) => date

Convertit une chaîne de date d’entrée en date à l’aide d’un format de date d’entrée facultatif. Reportez-vous à la classe SimpleDateFormat de Java pour connaître les formats disponibles. Si le format de date d’entrée est omis, le format par défaut est yyyy-[M]M-[d]d. Les formats acceptés sont :[ yyyy, yyyy-[M]M, yyyy-[M]M-[d]d, yyyy-[M]M-[d]dT* ].

  • toDate('2012-8-18') -> toDate('2012-08-18')
  • toDate('12/18/2012', 'MM/dd/yyyy') -> toDate('2012-12-18')

toDecimal

toDecimal(<value> : any, [<precision> : integral], [<scale> : integral], [<format> : string], [<locale> : string]) => decimal(10,0)

Convertit une valeur numérique ou une chaîne en une valeur de type decimal. Si la précision et l’échelle ne sont pas spécifiées, la valeur par défaut est (10,2). Vous pouvez utiliser un format décimal Java facultatif pour la conversion. Utilisez un format de paramètres régionaux facultatif sous la forme d’une langue BCP47 telle que en-US, de ou zh-CN.

  • toDecimal(123.45) -> 123.45
  • toDecimal('123.45', 8, 4) -> 123.4500
  • toDecimal('$123.45', 8, 4,'$###.00') -> 123.4500
  • toDecimal('Ç123,45', 10, 2, 'Ç###,##', 'de') -> 123.45

toDouble

toDouble(<value> : any, [<format> : string], [<locale> : string]) => double

Convertit une valeur numérique ou une chaîne en une valeur de type double. Vous pouvez utiliser un format décimal Java facultatif pour la conversion. Utilisez un format de paramètres régionaux facultatif sous la forme d’une langue BCP47 telle que en-US, de ou zh-CN.

  • toDouble(123.45) -> 123.45
  • toDouble('123.45') -> 123.45
  • toDouble('$123.45', '$###.00') -> 123.45
  • toDouble('Ç123,45', 'Ç###,##', 'de') -> 123.45

toFloat

toFloat(<value> : any, [<format> : string], [<locale> : string]) => float

Convertit une valeur numérique ou une chaîne en une valeur de type float. Vous pouvez utiliser un format décimal Java facultatif pour la conversion. Tronque toutes les valeurs de type double.

  • toFloat(123.45) -> 123.45f
  • toFloat('123.45') -> 123.45f
  • toFloat('$123.45', '$###.00') -> 123.45f

toInteger

toInteger(<value> : any, [<format> : string], [<locale> : string]) => integer

Convertit une valeur numérique ou une chaîne en une valeur entière. Vous pouvez utiliser un format décimal Java facultatif pour la conversion. Tronque toutes les valeurs de type long, float ou double.

  • toInteger(123) -> 123
  • toInteger('123') -> 123
  • toInteger('$123', '$###') -> 123

toLong

toLong(<value> : any, [<format> : string], [<locale> : string]) => long

Convertit une valeur numérique ou une chaîne en une valeur de type long. Vous pouvez utiliser un format décimal Java facultatif pour la conversion. Tronque toutes les valeurs de type float ou double.

  • toLong(123) -> 123
  • toLong('123') -> 123
  • toLong('$123', '$###') -> 123

topN

topN(<column/expression> : any, <count> : long, <n> : integer) => array

Obtient les valeurs principales N de cette colonne en fonction de l’argument count.

  • topN(custId, count, 5)
  • topN(productId, num_sales, 10)

toShort

toShort(<value> : any, [<format> : string], [<locale> : string]) => short

Convertit une valeur numérique ou une chaîne en une valeur de type short. Vous pouvez utiliser un format décimal Java facultatif pour la conversion. Tronque toutes les valeurs de type integer, long, float ou double.

  • toShort(123) -> 123
  • toShort('123') -> 123
  • toShort('$123', '$###') -> 123

toString

toString(<value> : any, [<number format/date format> : string], [<date locale> : string]) => string

Convertit un type de données primitif en chaîne. Vous pouvez spécifier un format pour les nombres et la date. Si elle n’est pas spécifiée, la valeur par défaut du système est choisie. Le format décimal Java est utilisé pour les nombres. Reportez-vous à la classe SimpleDateFormat de Java pour connaître les formats disponibles. Le format par défaut est yyyy-MM-dd. Pour un horodatage de date ou d’heure, vous pouvez éventuellement spécifier des paramètres régionaux.

  • toString(10) -> '10'
  • toString('engineer') -> 'engineer'
  • toString(123456.789, '##,###.##') -> '123,456.79'
  • toString(123.78, '000000.000') -> '000123.780'
  • toString(12345, '##0.#####E0') -> '12.345E3'
  • toString(toDate('2018-12-31')) -> '2018-12-31'
  • isNull(toString(toDate('2018-12-31', 'MM/dd/yy'))) -> true
  • toString(4 == 20) -> 'false'
  • toString(toDate('12/31/18', 'MM/dd/yy', 'es-ES'), 'MM/dd/yy', 'de-DE')

toTimestamp

toTimestamp(<string> : any, [<timestamp format> : string], [<time zone> : string]) => timestamp

Convertit une chaîne en horodatage lorsqu’un format d’horodatage facultatif est donné. Si l’horodatage est omis, le modèle yyyy-[M]M-[d]d hh:mm:ss[.f...] par défaut est utilisé. Vous pouvez passer un fuseau horaire facultatif sous la forme , GMTPSTou UTCAmerica/Cayman. La fonction timestamp prend en charge une précision allant jusqu'à la milliseconde avec une valeur de 999. Reportez-vous à la classe SimpleDateFormat de Java pour connaître les formats disponibles.

  • toTimestamp('2016-12-31 00:12:00') -> toTimestamp('2016-12-31 00:12:00')
  • toTimestamp('2016-12-31T00:12:00', 'yyyy-MM-dd\'T\'HH:mm:ss', 'PST') -> toTimestamp('2016-12-31 00:12:00')
  • toTimestamp('12/31/2016T00:12:00', 'MM/dd/yyyy\'T\'HH:mm:ss') -> toTimestamp('2016-12-31 00:12:00')
  • millisecond(toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS')) -> 871

toUTC

toUTC(<value1> : timestamp, [<value2> : string]) => timestamp

Convertit l’horodatage au format UTC. Vous pouvez passer un fuseau horaire facultatif sous la forme , GMTPSTou UTCAmerica/Cayman. Il est défini par défaut sur le fuseau horaire actuel. Reportez-vous à la classe SimpleDateFormat de Java pour connaître les formats disponibles.

  • toUTC(currentTimestamp()) == toTimestamp('2050-12-12 19:18:12') -> false
  • toUTC(currentTimestamp(), 'Asia/Seoul') != toTimestamp('2050-12-12 19:18:12') -> true

translate

translate(<string to translate> : string, <lookup characters> : string, <replace characters> : string) => string

Remplace un jeu de caractères par un autre jeu de caractères dans la chaîne. Les caractères ont un remplacement un à un.

  • translate('(bojjus)', '()', '[]') -> '[bojjus]'
  • translate('(gunchus)', '()', '[') -> '[gunchus'

trim

trim(<string to trim> : string, [<trim characters> : string]) => string

Supprime une chaîne de caractères de début et de fin. Si le deuxième paramètre n’est pas spécifié, il supprime les espaces blancs. Sinon, il supprime tout caractère spécifié dans le deuxième paramètre.

  • trim(' dumbo ') -> 'dumbo'
  • trim('!--!du!mbo!', '-!') -> 'dumbo'

true

true() => boolean

Retourne toujours une valeur true. Utilisez la fonction syntax(true()) si une colonne est nommée true.

  • (10 + 20 == 30) -> true
  • (10 + 20 == 30) -> true()

typeMatch

typeMatch(<type> : string, <base type> : string) => boolean

Correspond au type de la colonne. Vous pouvez l’utiliser uniquement dans les expressions de modèle. La number fonction correspond à court, entier, long, double, float ou décimal. La fonction integral correspond à court, entier ou long. La fonction fractional prend en charge les types double, float et décimal. La fonction datetime correspond au type de date ou d’horodatage.

  • typeMatch(type, 'number')
  • typeMatch('date', 'datetime')

U

unescape

unescape(<string_to_escape> : string, <format> : string) => string

Annule l’échappement d’une chaîne conformément à un format. Les valeurs littérales pour les formats acceptables sont json, xml, ecmascript, htmlet java.

  • unescape('{\\\\\"value\\\\\": 10}', 'json')
  • '{\\\"value\\\": 10}'

unfold

unfold (<value1>: array) => any

Déplie un tableau en un ensemble de lignes et répète les valeurs pour la colonne restante dans chaque ligne.

  • unfold(addresses) => any
  • unfold( @(name = salesPerson, sales = salesAmount) ) => any

unhex

unhex(<value1>: string) => binary

Annule la représentation sous forme de chaîne hexadécimale d'une valeur binaire. Vous pouvez l’utiliser avec sha2, md5 pour convertir de la chaîne en représentation binaire.

  • unhex('1fadbe') -> toBinary([toByte(0x1f), toByte(0xad), toByte(0xbe)])
  • unhex(md5(5, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4'))) -> toBinary([toByte(0x4c),toByte(0xe8),toByte(0xa8),toByte(0x80),toByte(0xbd),toByte(0x62),toByte(0x1a),toByte(0x1f),toByte(0xfa),toByte(0xd0),toByte(0xbc),toByte(0xa9),toByte(0x05),toByte(0xe1),toByte(0xbc),toByte(0x5a)])

union

union(<value1>: array, <value2> : array) => array

Retourne un ensemble d’unions d’éléments distincts depuis deux tableaux.

  • union([10, 20, 30], [20, 40]) => [10, 20, 30, 40]

upper

upper(<value1> : string) => string

Convertit une chaîne en majuscules.

  • upper('bojjus') -> 'BOJJUS'

uuid

uuid() => string

Retourne l’UUID généré.

  • uuid()

V

variance

variance(<value1> : number) => double

Obtient la variance d’une colonne.

  • variance(sales)

varianceIf

varianceIf(<value1> : boolean, <value2> : number) => double

Obtient la variance d’une colonne, en fonction des critères.

  • varianceIf(region == 'West', sales)

variancePopulation

variancePopulation(<value1> : number) => double

Obtient la variance de remplissage d’une colonne.

  • variancePopulation(sales)

variancePopulationIf

variancePopulationIf(<value1> : boolean, <value2> : number) => double

Obtient la variance de population d’une colonne, en fonction des critères.

  • variancePopulationIf(region == 'West', sales)

varianceSample

varianceSample(<value1> : number) => double

Obtient la variance non biaisée d’une colonne.

  • varianceSample(sales)

varianceSampleIf

varianceSampleIf(<value1> : boolean, <value2> : number) => double

Obtient la variance non biaisée d’une colonne, en fonction des critères.

  • varianceSampleIf(region == 'West', sales)

W

weekOfYear

weekOfYear(<value1> : datetime) => integer

Calcule la semaine de l’année à partir d’une date donnée.

  • weekOfYear(toDate('2008-02-20')) -> 8

weeks

weeks(<value1> : integer) => long

Obtient la durée en millisecondes pour le nombre de semaines.

  • weeks(2) -> 1209600000L

X

xor

xor(<value1> : boolean, <value2> : boolean) => boolean

Utilise l’opérateur logique XOR . Identique à l’opérateur ^.

  • xor(true, false) -> true
  • xor(true, true) -> false
  • true ^ false -> true

Y

year

year(<value1> : datetime) => integer

Obtient la valeur d’année d’une date.

  • year(toDate('2012-8-8')) -> 2012