Ga naar hoofdinhoud

Functions

Beheer doe je bij voorkeur via de webapp; deze objecten zijn voor het SQL-endpoint (SSMS / Azure Data Studio).

Deze pagina beschrijft alle 58 functions in de data-plane database IRIS_DWH, gegroepeerd per schema. Per function vind je de volledig gekwalificeerde naam, de signature (zoals in de CREATE FUNCTION-header staat) en het doel. De namen en types zijn rechtstreeks overgenomen uit de broncode — code is leidend.

Schema's

De functions verdelen zich over zeven schema's: LoadManagement (de laadmotor), Config (instellingen, licentie, logging), Change (DTAP-changebeheer), Metadata (lineage), dbo (tekst- en conversie-utilities), oData (OData-endpoint) en Expose (rapportage-RBAC).

Zie ook: Stored procedures en Logs & views.


LoadManagement (laadmotor)

Het hart van de laadmotor. Deze functions bepalen wat er geladen wordt en hoe STAGE naar HIS (SCD2) gemergd wordt.

[LoadManagement].[fxArchivingPredicate] — scalar

Signature:

(@Target NVARCHAR(512)) RETURNS NVARCHAR(MAX)

Doel: bouwt per tabel de archiveringsconditie (het WHERE-deel) uit de configuratie op UsedTables: CLOSEDisCurrent = 0 AND ETL_EndDate < '<grens>', BUSINESS[<ArchivingColumn>] < '<grens>', of de vrije ArchivingClause letterlijk. De grensdatum wordt als vaste literal gerenderd, zodat de kopieer- en opschoonstap binnen één run dezelfde regel gebruiken. NULL = archivering uit of onvolledig geconfigureerd (de health checks signaleren dat). Consumenten: fxExtractor (bouwt er het ArchivingScript van), spHIS_InsertAndUpdate (blokkeert bij BUSINESS binnenkomende rijen in de gearchiveerde ruimte) en — via ADF — spArchivePurge. Zie Archivering.

[LoadManagement].[fxExtractor] — table-valued

Signature:

(@LoadFilter NVARCHAR(MAX) = NULL, @LoadType NVARCHAR(MAX) = NULL) RETURNS TABLE

Doel: het hart van "wat moet er geladen worden". Per actieve brontabel bouwt deze function het bronspecifieke extract-commando (de DeltaScript / OData $select…$filter / AFAS-query-string), de doel-schema- en tabelnamen, bestands- en delimiter-metadata, package size en het archiveringsscript. Het is de TVF achter de view [LoadManagement].[vwExtractor] (die niets anders doet dan SELECT * FROM [LoadManagement].[fxExtractor](NULL,NULL)). ADF leest die view om te leren welke tabellen geladen moeten worden. Elke geretourneerde rij = één te laden tabel.

Output: ~40 kolommen, waaronder sourceType, isFile, Source, SourceSchema, SourceTable, TechSchema, TechTable, DataPlatform, LoadType, DeltaColumn, LatestRecord, DeltaScript, loadFilter, Pipeline, Trigger, fileLocation, fileName, TargetSource, TargetSchema, TargetTable, Target, keepStage, TargetSchemaHIS, TargetSchemaSTAGE, CellRange, Sheet, FileType, ColumnDelimiter, RowDelimiter, QuoteCharacter, FirstRowHeader, EscapeCharacter, CompressionType, LatestRuntime, noKey, deltaOverlap, deltaOverlapUnit, PackageSize, ArchivingScript, paginationType, paginationDetails, LoadStatus.

Twee parameters, geen @PackageSize

fxExtractor heeft exact twee parameters: @LoadFilter en @LoadType. Er is géén derde parameter @PackageSize. PackageSize is een output-kolom (COALESCE(u.PackageSize, st.MaxPackageSize, 25000)), geen invoerparameter. Eveneens: de output-kolommen heten LatestRecord en LatestRuntime (niet "LapageRecord" / "LapageRuntime").

[LoadManagement].[fxGetActualTablename]

Signature: (@Source NVARCHAR(1024), @Schema NVARCHAR(1024), @Table NVARCHAR(1024)) RETURNS NVARCHAR(4000)

Doel: geeft UsedTables.ActualTableName terug voor de combinatie source/schema/table. Wordt niets gevonden, dan valt de function terug op CustomYres.Extractor.[TARGET].

[LoadManagement].[fxGetDataType]

Signature:

(@source NVARCHAR(256), @dataType NVARCHAR(256), @sourceLength INT, @sourcePrecision INT,
@sourceScale INT, @schema NVARCHAR(256)='N/A', @table NVARCHAR(256)='N/A',
@column NVARCHAR(256)='N/A') RETURNS NVARCHAR(256)

Doel: mapt het bron-datatype naar het volledige doel-kolomtype via LoadManagement.TypeMapping en LoadManagement.GlobalTypeMapping. Houdt rekening met lengte, precisie en scale, en past eventuele overrides toe.

[LoadManagement].[fxGetInitialDataType]

Signature: dezelfde parameterset als fxGetDataType (@source, @dataType, @sourceLength, @sourcePrecision, @sourceScale, @schema, @table, @column) RETURNS NVARCHAR(256).

Doel: als fxGetDataType, maar bepaalt het volledige doel-kolomtype zonder kolom-overrides toe te passen (de "initiële" mapping).

[LoadManagement].[fxGetKeyColumns]

Signature:

(@Source NVARCHAR(1024), @Schema NVARCHAR(1024), @Table NVARCHAR(1024), @withType BIT=0,
@enclosureChar NVARCHAR(1)='"', @seperatorChar NVARCHAR(1)=',') RETURNS NVARCHAR(MAX)

Doel: haalt de sleutelkolommen (key columns) van de tabel op uit LoadManagement.vwDictionary. Zijn er geen gemarkeerd, dan vallen alle kolommen terug als sleutel. Met @withType=1 wordt ook het datatype meegegeven; @enclosureChar/@seperatorChar bepalen de opmaak van de geretourneerde lijst.

[LoadManagement].[fxGetRowColumns]

Signature: identiek aan fxGetKeyColumns (@Source, @Schema, @Table, @withType BIT=0, @enclosureChar NVARCHAR(1)='"', @seperatorChar NVARCHAR(1)=',') RETURNS NVARCHAR(MAX).

Doel: haalt de row-kolommen (de kolommen die meedoen in change-detection) op uit LoadManagement.vwDictionary, met dezelfde opmaakopties als hierboven.

[LoadManagement].[fxGetKeyHashColumns]

Signature: (@Source NVARCHAR(1024), @Schema NVARCHAR(1024), @Table NVARCHAR(1024)) RETURNS NVARCHAR(MAX)

Doel: bouwt de concatenatie van sleutelkolommen waaruit de KeyHash (HASHBYTES('SHA2_512', …)) wordt berekend. Zijn er geen sleutelkolommen, dan worden alle kolommen gebruikt.

[LoadManagement].[fxGetRowHashColumns]

Signature: (@Source NVARCHAR(1024), @Schema NVARCHAR(1024), @Table NVARCHAR(1024)) RETURNS NVARCHAR(MAX)

Doel: bouwt de concatenatie van row-kolommen waaruit de RowHash wordt berekend. Kolommen met RowHash=0 worden uitgesloten van change-detection.

[LoadManagement].[fxGetOptimized]

Signature: (@Type NVARCHAR(50), @Table NVARCHAR(250), @Status NVARCHAR(50)='Intended') RETURNS NVARCHAR(20)

Doel: bepaalt of een tabel memory-optimized is, op basis van LoadManagement.UsedTables of Config.Settings. @Type is 'STAGE' of 'HIS'. @Status accepteert de letterlijke waarden 'Intended' (de geconfigureerde wens) of 'Real' (de werkelijke status); spHIS_InsertAndUpdate roept de function aan met 'Real'.

[LoadManagement].[fxGetStoreType]

Signature: (@Table NVARCHAR(250), @Status NVARCHAR(50)='Intended') RETURNS NVARCHAR(20)

Doel: bepaalt of een tabel row- of column-store gebruikt, op basis van LoadManagement.UsedTables of Config.Settings. Dezelfde 'Intended'/'Real'-logica als fxGetOptimized.

[LoadManagement].[fxGetSurrogate]

Signature: (@Table NVARCHAR(4000)) RETURNS INT

Doel: geeft de surrogate-key-instelling van de tabel terug uit LoadManagement.UsedTables (voor de ActualTableName met Active=1). Is die leeg/NULL, dan valt de function terug op de instelling DefaultSurrogate in Config.Settings.

[LoadManagement].[fxGetOptimalPageSize]

Signature: (@object NVARCHAR(4000)) RETURNS INT

Doel: berekent een optimale page size voor het pagineren van STAGEHIS, op basis van de gemeten KB-per-rij van het object en de beschikbare tempdb-ruimte. Wordt gebruikt wanneer de instelling PageSize de waarde OPTIMAL heeft.

[LoadManagement].[fxGetDeltaValue]

Signature: (@target NVARCHAR(4000), @addCorrectQuotation BIT) RETURNS NVARCHAR(100)

Doel: levert de huidige delta-watermark-waarde voor een doeltabel (de hoogste verwerkte delta-waarde), optioneel met juiste quoting voor gebruik in dynamische SQL.

[LoadManagement].[fxPredictKeyColumns]

Signature: (@Source NVARCHAR(1024), @Schema NVARCHAR(1024), @Table NVARCHAR(1024)) RETURNS NVARCHAR(MAX)

Doel: voorspelt de sleutelkolommen voor een nieuwe tabel op basis van bestaande metadata in LoadManagement.Dictionary. Worden er geen gevonden, dan vallen alle non-nullable kolommen terug als voorspelde sleutel. Wordt gebruikt door de wizard "Tabel toevoegen" als suggestie.

[LoadManagement].[fxPredictTableName]

Signature: (@Source NVARCHAR(1024), @Schema NVARCHAR(1024), @Table NVARCHAR(1024)) RETURNS NVARCHAR(4000)

Doel: voorspelt de doel-tabelnaam op basis van source/schema/table, met inachtneming van eventuele overrides in LoadManagement.UsedTables.

[LoadManagement].[fxGenerateAdfUrl]

Signature: (@runId NVARCHAR(1024)) RETURNS NVARCHAR(4000)

Doel: bouwt de volledige URL om een specifieke pipeline-run in de Azure Data Factory-portal te bekijken. Wordt gebruikt door de monitoring-views om deep-links naar ADF-runs te tonen.

[LoadManagement].[fxCreateNetsuiteAuthHeader]

Signature:

(@consumer_key VARCHAR(8000), @Consumer_secret VARCHAR(8000), @oAuth_Token VARCHAR(8000),
@Token_secret VARCHAR(8000), @URL VARCHAR(8000), @Method VARCHAR(50)) RETURNS VARCHAR(8000)

Doel: bouwt de OAuth-1.0-Authorization-header (met HMAC-SHA256-signature, nonce en timestamp) voor NetSuite-API-aanroepen.


Config (instellingen, licentie, logging)

[Config].[fxGetSetting]

Signature: (@SettingName NVARCHAR(MAX)) RETURNS NVARCHAR(MAX)

Doel: haalt de waarde van een instelling op uit Config.Settings. Bevat speciale GodMode-logica: een tweede lookup leest de GodMode-rij met een tijd-roterende id; begint de gevraagde instellingsnaam met Allow% en resolvet GodMode naar '1', dan geeft de function '1' terug (force-allow).

[Config].[fxGetSchemaName]

Signature: (@Target NVARCHAR(MAX), @Type NVARCHAR(MAX)) RETURNS NVARCHAR(MAX)

Doel: bepaalt de schemanaam voor een doel en type. Basisschema is fxGetSetting('SchemaHIS') of fxGetSetting('SchemaSTAGE') (anders 'ERROR'). Heeft de bijbehorende UsedTables-rij een niet-lege OverwriteSettingSchema, dan wordt het resultaat CONCAT_WS('_', basisSchema, OverwriteSettingSchema) (bijvoorbeeld ODS_Finance).

[Config].[fxAddTryCatch]

Signature:

(@SQL NVARCHAR(MAX), @process UNIQUEIDENTIFIER, @spName NVARCHAR(MAX), @spStep NVARCHAR(MAX),
@spCall NVARCHAR(MAX), @appUser NVARCHAR(MAX)) RETURNS NVARCHAR(MAX)

Doel: wikkelt een SQL-script tussen twee EXECUTE [Config].[spWriteMessage]-aanroepen ("Preparing for step" / na de stap) voor breadcrumb-logging. Wordt door spHIS_InsertAndUpdate gebruikt vlak voordat het gegenereerde laad-SQL wordt uitgevoerd.

[Config].[fxCheckLicense]

Signature:

(@feature NVARCHAR(1024), @value NVARCHAR(1024), @check NVARCHAR(50)='SYSTEM',
@checkvalue NVARCHAR(1024)) RETURNS NVARCHAR(4000)

Doel: valideert de licentiesleutel (Config.Settings.LicenseKey) tegen een feature/limiet. Controleert installatie-binding, einddatum en type, en geeft een issue-string terug (bijv. "The provided license key is not valid anymore") of een lege/oké-status. Dit is de technische afdwinging achter de licentie-tiers; zo geven over-quota tabellen/databases in fxExtractor geen rijen terug.

[Config].[fxCheckSystem]

Signature: (@value NVARCHAR(1024)) RETURNS NVARCHAR(4000)

Doel: controleert systeem-/installatiebeperkingen (gekoppeld aan @@SERVERNAME) als aanvulling op de licentiecontrole.

[Config].[fxViewLicense] — table-valued

Signature: () RETURNS TABLE

Doel: ontsleutelt de opgeslagen LicenseKey (via DECRYPTBYPASSPHRASE met servernaam-salt) en geeft de licentie-inhoud terug als [key]/[value]-paren — handig om de actieve licentie te inspecteren.

[Config].[fxGetSession]

Signature: () RETURNS NVARCHAR(MAX)

Doel: bevraagt sys.dm_exec_connections en sys.dm_exec_sessions en geeft de details van actieve sessies terug als JSON.

[Config].[fxGetHmacSha256]

Signature: (@Key VARCHAR(MAX), @baseString VARCHAR(MAX)) RETURNS VARCHAR(MAX)

Doel: berekent een HMAC-SHA256-signature in pure T-SQL (inclusief de inner/outer-padding). Gebruikt voor het ondertekenen van uitgaande API-aanroepen.

[Config].[fxUrlEncode]

Signature: (@Input NVARCHAR(MAX)) RETURNS NVARCHAR(MAX)

Doel: URL-encodeert een string (vervangt spaties en speciale tekens door hun %XX-equivalent) voor gebruik in API-URL's en OAuth-signatures.


Change (DTAP-changebeheer)

Functions die het changebeheer (Projects → Changes → Release/Install) ondersteunen.

[Change].[fxGetChangeIsOpen]

Signature: (@ChangeId INT) RETURNS INT

Doel: bepaalt of een change (geïdentificeerd door @ChangeId) momenteel open is. Joint Change.Changes met Change.Status en controleert dat de change van de juiste server/database afkomstig is. Geeft 1 (open) of 0 (niet open) terug.

[Change].[fxGetLastestChangeIdFor]

Signature: (@objectType INT, @objectName NVARCHAR(1024)) RETURNS INT

Doel: haalt de laatste change-ID op die een specifiek objecttype en -naam bevat, door Change.ChangeContent te doorzoeken.

Naamgeving

De function heet in de code letterlijk fxGetLastestChangeIdFor — met de typefout "Lastest" (de schrijfwijze is bewust verbatim overgenomen). De eerdere wiki-spelling "fxGetLaspageChangeIdFor" is fout op twee punten: het is Latest, niet "Lapage", en de code spelt het zelf als "Lastest".

[Change].[fxGetLatestOpenChange]

Signature: (@ObjectType NVARCHAR(10), @ObjectName NVARCHAR(1024)) RETURNS INT

Doel: combineert fxGetLastestChangeIdFor en fxGetChangeIsOpen om de laatste open change voor een objecttype/-naam te vinden en terug te geven.

[Change].[fxPossibleChanges] — table-valued

Signature: (@ObjectType NVARCHAR(10), @ObjectName NVARCHAR(1024)) RETURNS TABLE

Doel: geeft de mogelijke change-acties voor een object terug, rekening houdend met of er al een open change bestaat (via fxGetLastestChangeIdFor/fxGetChangeIsOpen).

[Change].[fxMockDelete] — table-valued

Signature: (@ObjectName NVARCHAR(4000)) RETURNS TABLE

Doel: simuleert wat er gebeurt bij het verwijderen van een object: bepaalt welke afhankelijke objecten het object gebruiken (en de bijbehorende open change-ID), zodat de impact zichtbaar is vóór de delete wordt doorgevoerd.

[Change].[fxGetReleasedJson]

Signature: (@ChangeID INT) RETURNS NVARCHAR(MAX)

Doel: haalt de JSON-data op die bij een specifieke change-ID is opgeslagen in Change.Changes.

[Change].[fxGetTableDefinition]

Signature:

(@ObjectName NVARCHAR(1024), @UseTransaction BIT=0, @GenerateFKs BIT=1, @GenerateIdentity BIT=1,
@GenerateCollation BIT=0, @GenerateCreateTable BIT=1, @GenerateIndexes BIT=1,) RETURNS NVARCHAR(MAX)

Doel: genereert een volledig SQL-script om een tabeldefinitie te herbouwen — kolommen, indexen, constraints en optioneel de inhoud als JSON. De vlag-parameters bepalen of foreign keys, identity-kolommen, collation, het CREATE TABLE-statement zelf en indexen worden meegenomen.

[Change].[fxGetTableTypeDefinition]

Signature: (@ObjectName NVARCHAR(1024)) RETURNS NVARCHAR(MAX)

Doel: genereert het CREATE TYPE … AS TABLE(...)-script om een user-defined table type te herbouwen, inclusief de kolommen en hun eigenschappen.


Metadata (lineage en afhankelijkheden)

[Metadata].[fxGetViewSources] — table-valued

Signature: (@VIEW NVARCHAR(256)) RETURNS TABLE

Doel: bepaalt de bronobjecten (tabellen of views) die een opgegeven view direct gebruikt, door de view-definitie te parsen en systeemtabellen te bevragen.

[Metadata].[fxGetViewSourcesRecursive] — table-valued

Signature: (@VIEW NVARCHAR(256)) RETURNS TABLE

Doel: als fxGetViewSources, maar recursief: ook de bronnen van de gevonden views worden uitgevouwen, zodat je de complete lineage-keten ziet.

[Metadata].[fxGetDependencies] — table-valued

Signature: (@ObjectName VARCHAR(500)) RETURNS TABLE

Doel: gebruikt een recursieve CTE om alle afhankelijke objecten (en de objecten daar weer onder) van een stored procedure, view, function of tabel op te halen.

[Metadata].[fxGetReferencedObjects] — table-valued

Signature: (@sql NVARCHAR(MAX)) RETURNS TABLE

Doel: een best-effort T-SQL-parser die objectnamen na FROM, JOIN, APPLY, UPDATE, INTO, MERGE en DELETE FROM uit ad-hoc SQL-tekst haalt. Houd rekening met de beperkingen: objecten in dynamische SQL, synoniemen en complexe geneste subqueries/CTE's worden niet altijd herkend (vereist SQL Server 2022+).

[Metadata].[fxGetObjectTree]

Signature: () RETURNS NVARCHAR(MAX)

Doel: bouwt een overzichtsboom van alle database-objecten (naam, type, schema) en markeert per object of het van oorsprong Yres of custom is.

[Metadata].[fxColumnUsage] — table-valued

Signature: (@SchemaName SYSNAME, @TableName SYSNAME) RETURNS TABLE

Doel: geeft het kolomgebruik voor een opgegeven schema/tabel terug (welke kolommen waar gebruikt worden) — nuttig voor impact-analyse.


dbo (tekst- en conversie-utilities)

Algemene hulpfuncties voor string-manipulatie en type-conversie.

[dbo].[fxGeneratePassword]

Signature: (@Length INT = 16) RETURNS NVARCHAR(1024)

Doel: genereert een willekeurig wachtwoord van de opgegeven lengte (tekens uit ASCII 48–122).

[dbo].[fxStripCharacters]

Signature: (@String NVARCHAR(MAX), @MatchExpression VARCHAR(255)) RETURNS NVARCHAR(MAX)

Doel: verwijdert uit de invoerstring alle tekens die voldoen aan de opgegeven match-expressie.

[dbo].[fxRemoveNonAlphaCharacters]

Signature: (@Temp VARCHAR(1000)) RETURNS VARCHAR(1000)

Doel: verwijdert alle niet-alfabetische tekens uit de invoerstring (houdt alleen a–z over). Er bestaat in de repo een tweede, identieke definitie (fxRemoveNonAlphaCharacters_1.sql) van dezelfde function — beide bevatten dezelfde logica.

[dbo].[fxToProper]

Signature: (@string NVARCHAR(4000)) RETURNS NVARCHAR(4000)

Doel: zet een string om naar proper case (eerste letter hoofdletter, rest kleine letters).

[dbo].[fxToDecimal]

Signature: (@string NVARCHAR(1024), @decimals INT=0, @findNegative BIT=1) RETURNS DECIMAL(25,8)

Doel: converteert een string naar een decimal en verwerkt verschillende formaten; met @findNegative=1 worden negatieve waarden herkend.

[dbo].[fxToReadableSize]

Signature: (@kb DECIMAL(38,10)) RETURNS NVARCHAR(50)

Doel: formatteert een grootte in kilobytes naar een leesbare string (KB, MB of GB).

[dbo].[fxUNIXtoDateTime]

Signature: (@epochStringDate NVARCHAR(50)) RETURNS DATETIME2(0)

Doel: converteert een UNIX-timestamp (epoch, als string) naar een SQL Server datetime-waarde.

[dbo].[fxUTC2CET]

Signature: (@UTC_DateTime DATETIME) RETURNS DATETIME

Doel: converteert een UTC-datetime naar Central European Time (CET). Wordt onder meer door de monitoring-views gebruikt om tijden in lokale tijd te tonen.

[dbo].[fxGetJsonCollection]

Signature: (@Json NVARCHAR(MAX)) RETURNS NVARCHAR(1024)

Doel: bepaalt de (eerste/relevante) JSON-collectie binnen een JSON-string door dbo.fxGetJsonCollections te bevragen.

[dbo].[fxGetJsonCollections] — table-valued

Signature: (@Json NVARCHAR(MAX)) RETURNS TABLE

Doel: geeft alle collecties (arrays) binnen een JSON-string terug, met een rangschikking die bekende sleutels als RESULT, RESULTS, DATA en VALUE prioriteert. Gebruikt bij het inlezen van REST-/OData- responses.

[dbo].[UNQUOTENAME]

Signature: (@input SYSNAME, @quotechar NCHAR(1)=N'[') RETURNS NVARCHAR(4000)

Doel: de tegenhanger van QUOTENAME: verwijdert de omsluitende quote-tekens (standaard [ ]) van een identifier.


oData (OData-endpoint)

Functions die het OData-rapportage-endpoint van de database voeden.

[oData].[fxBaseResponse]

Signature: (@BaseUrl NVARCHAR(3000)) RETURNS NVARCHAR(MAX)

Doel: bouwt de basis-OData-respons-URL: voegt het metadata-endpoint toe en somt alle beschikbare tabellen en views in de database op.

[oData].[fxMetadataResponse]

Signature: (@BaseUrl NVARCHAR(3000)) RETURNS NVARCHAR(MAX)

Doel: genereert de OData-$metadata-respons, inclusief entity types en entity sets, en mapt SQL-types naar de bijbehorende OData-EDM-types volgens de OData-standaard.


Expose (rapportage-RBAC)

[Expose].[fxGenerateDefinitions]

Signature:

(@Schema NVARCHAR(1024), @Name NVARCHAR(1024), @DataType NVARCHAR(256),) RETURNS NVARCHAR(MAX)

Doel: genereert de definities voor rapportage-objecten in het Exposed-schema. @DataType duidt de rapportage-rol van de kolom aan ([None], [FACT], [DIM1], [DIM2], [DIM4]); op basis van de gekoppelde Yres-bron/-tabel en surrogate-key bouwt de function de objectdefinitie.


Lapage → Latest

In oudere documentatie kwam het token "Lapage" voor (bijvoorbeeld LapageRecord of fxGetLapageOpenChange). Dat is een OCR-fout: het juiste woord is "Latest". In de live database komt "Lapage" nergens voor. De correcte namen zijn LatestRecord, LatestRuntime, fxGetLastestChangeIdFor (met de "Lastest"-typefout uit de code) en fxGetLatestOpenChange.