Lue englanniksi

Jaa


Odbc.DataSource-ominaisuuden parametrit

Odbc.DataSource-funktiossa on kaksi parametria – a connectionString ohjaimelle ja options tietue, jonka avulla voit ohittaa eri ohjaimen toiminnot. Asetustietueen avulla voit ohittaa kuljettajan ilmoittamat toiminnot ja muut tiedot ja hallita siirtymistoiminnon toimintaa sekä vaikuttaa M-moduulin luomiin SQL-kyselyihin.

Tuettujen vaihtoehtojen tietuekentät jakautuvat kahteen luokkaan: ne ovat julkisia ja aina käytettävissä olevia ja ne, jotka ovat käytettävissä vain laajennettavuuskontekstissa.

Seuraavassa taulukossa kuvataan asetustietueen julkiset kentät.

Field Kuvaus
CommandTimeout Kestoarvo, joka määrittää, miten kauan palvelinpuolen kyselyn suorittaminen saa kestää, ennen kuin se peruutetaan.

Oletus: 10 minuuttia
ConnectionTimeout Kestoarvo, joka määrittää, kuinka kauan odotetaan, ennen kuin yritetään muodostaa yhteys palvelimeen.

Oletus: 15 sekuntia
CreateNavigationProperties Looginen arvo, joka määrittää, luodaanko siirtymisominaisuudet palautetuista taulukoista. Siirtymisominaisuudet perustuvat kuljettajan raportoimiin viiteavainsuhteisiin. Nämä ominaisuudet näkyvät "virtuaalisina" sarakkeina, joita voidaan laajentaa kyselyeditorissa, jolloin luodaan asianmukainen liitos.

Jos viiteavainriippuvuuksien laskeminen on ohjainta varten kallista, haluat ehkä määrittää tämän arvon arvoksi false.

Oletus: tosi
HierarchicalNavigation Looginen arvo, joka määrittää, tarkastellaanko taulukoita ryhmiteltynä niiden rakenteen nimien mukaan. Kun asetus on epätosi, taulukot näytetään litteänä luettelona kunkin tietokannan alla.

Oletus: epätosi
SqlCompatibleWindowsAuth Looginen arvo, joka määrittää, tuotetaanko SQL Server -yhteensopiva yhteysmerkkijono Windows-todennustaTrusted_Connection=Yes käytettäessä.

Jos ohjain tukee Windows-todennusta, mutta vaatii lisäasetuksia tai vaihtoehtoisia asetuksia yhteysmerkkijono, aseta arvoksi false ja käytä CredentialConnectionString seuraavassa taulukossa kuvattua Asetusten tietue -kenttää.

Oletus: tosi

Seuraavassa taulukossa kuvataan asetustietuekentät, jotka ovat käytettävissä vain laajennettavuuden kautta. Kentät, jotka eivät ole yksinkertaisia literaaliarvoja, kuvataan myöhemissä osissa.

Field Kuvaus
AstVisitor Tietue, joka sisältää yhden tai useamman ohituksen SQL-kyselyn luonnin hallintaan. Tämän kentän yleisin käyttö on tarjota logiikka, jolla luodaan LIMIT/OFFSET-lause ohjaimille, jotka eivät tue TOP:a.

Kenttiä ovat esimerkiksi Constant ja LimitClause.

Lisätietoja: AstVisitorin ohittaminen
CancelQueryExplicitly Looginen arvo, joka ohjaa M-moduulin peruuttamaan käynnissä olevat kutsut ODBC-ohjaimen kautta ennen ODBC-palvelimen yhteyden lopettamista.

Tästä kentästä on hyötyä tilanteissa, joissa kyselyn suorittamista hallitaan erillään palvelimeen olevista verkkoyhteyksistä, esimerkiksi joissakin Spark-käyttöönotoissa. Useimmissa tapauksissa tätä arvoa ei tarvitse määrittää, koska palvelimen kysely peruutetaan, kun palvelimen verkkoyhteys lopetetaan.

Oletus: epätosi
ClientConnectionPooling Looginen arvo, joka mahdollistaa asiakaspuolen yhteyksien yhdistämisen ODBC-ohjaimelle. Useimmat ohjaimet haluavat määrittää tämän arvon arvoksi tosi.

Oletus: epätosi
CredentialConnectionString Teksti- tai tietuearvo, jolla määritetään tunnistetietoihin liittyvät yhteysmerkkijono ominaisuudet.
HideNativeQuery Looginen arvo, joka määrittää, näyttääkö liitin luodut SQL-lausekkeet Power Query -käyttökokemuksessa. Tämän arvoksi on asetettava true vain, jos taustatietolähde tukee suoraan SQL-92:ta.

Oletus: epätosi
ImplicitTypeConversions Taulukkoarvo, joka sisältää ohjaimen tai taustapalvelimen tukemia implisiittisiä tyyppimuunnoksia. Tämän taulukon arvot lisäävät kuljettajan itsensä ilmoittamia muunnoksia.

Tätä kenttää käytetään yleensä -kentän kanssa SQLGetTypeInfo , kun kuljettajan ilmoittamat tietotyyppitiedot ohitetaan.
OnError Virheenkäsittelyfunktio, joka vastaanottaa parametrin, jonka tyyppi recordon errorRecord .

Tämän funktion yleisiä käyttötarkoituksia ovat SSL-yhteyksien virheiden käsittely, latauslinkin tarjoaminen, jos ohjainta ei löydy järjestelmästä, ja todennusvirheiden raportointi.
SoftNumbers Sallii M-moduulin valita yhteensopivan tietotyypin, kun kahden tietyn numeerisen tyypin välistä muuntoa ei ole määritetty tuetuksi SQL_CONVERT_*-ominaisuuksilla.

Oletus: epätosi
SqlCapabilities Tietue, joka tarjoaa erilaisia ohituksia ohjaintoiminnoista ja tavan määrittää ominaisuuksia, joita ei ilmaista ODBC 3.8:n kautta.

Lisätietoja: SqlCapabilitiesin ohittaminen
SQLColumns Funktio, jonka avulla voit muokata funktion SQLColumns palauttamia sarakkeiden metatietoja.

Lisätietoja: SQLColumnsin ohittaminen
SQLGetFunctions Tietue, jonka avulla voit ohittaa -kutsujen SQLGetFunctionspalauttamat arvot.

Tämän kentän yleinen käyttötarkoitus on poistaa parametrin sidonnan käyttö käytöstä tai määrittää, että luotujen kyselyjen tulee käyttää MUUNTO-funktion sijaan MUUNTO-funktiota.

Lisätietoja: SQLGetFunctions-funktion ohittaminen
SQLGetInfo Tietue, jonka avulla voit ohittaa -kutsujen SQLGetInfopalauttamat arvot.

Lisätietoja: SQLGetInfo-funktion ohittaminen
SQLGetTypeInfo Taulukko tai funktio, joka palauttaa taulukon, joka ohittaa kohteen palauttamat SQLGetTypeInfotyyppitiedot.

Kun arvoksi on määritetty taulukko, arvo korvaa kokonaan kuljettajan ilmoittamat tyyppitiedot. SQLGetTypeInfo Ei soiteta.

Kun arvoksi on määritetty funktio, funktio saa alkuperäisen -kutsun SQLGetTypeInfotuloksen, joten voit muokata taulukkoa.

Tätä kenttää käytetään yleensä, kun - ja SQLColumns-kenttien ilmoittamien tietotyyppien SQLGetTypeInfo välillä on ristiriita.

Lisätietoja: SQLGetTypeInfo-funktion ohittaminen
SQLTables Funktio, jonka avulla voit muokata taulukon metatietoja, jotka on palauttanut kutsu menetelmälle SQLTables.
TolerateConcatOverflow Sallii tekstiarvojen ketjuttelun, vaikka tulos voitaisiin katkaista sopimaan käytettävissä olevan tyypin alueeseen.

Jos esimerkiksi ketjutat VARCHAR(4000)-kentän, jossa on VARCHAR(4000)-kenttä järjestelmässä, joka tukee maksimaalista VARCHAR-kokoa 4000 eikä CLOB-tyyppiä, ketjutus taitetaan, vaikka tulos saatetaan katkaista.

Oletus: epätosi
UseEmbeddedDriver (sisäinen käyttö): Looginen arvo, joka määrittää, tuleeko ODBC-ohjain ladata paikallisesta hakemistosta (KÄYTTÄMÄLLÄ ODBC 4.0 -määrityksessä määritettyjä uusia toimintoja). Tämän arvon määrittävät yleensä vain Microsoftin luomat liittimet, jotka toimitetaan Power Queryn kanssa.

Kun asetus on epätosi, järjestelmän ODBC-ohjaimen hallintaa käytetään kuljettajan paikantamiseen ja lataamiseen.

Useimpien liittimien ei pitäisi joutua määrittämään tätä kenttää.

Oletus: epätosi

AstVisitorin ohittaminen

Kenttä AstVisitor määritetään Odbc.DataSource-asetustietueenkautta. Sen avulla muokataan tietyissä kyselytilanteissa luotuja SQL-lausekkeita.

Huomautus

Ohjaimet, jotka tukevat LIMIT- ja OFFSET-lausekkeita (TOP-lausekkeiden sijaan), haluavat tarjota ohituksen LimitClause kohteelle AstVisitor.

Vakio

Tämän arvon ohituksen antaminen on vanhentunut ja se voidaan poistaa tulevista toteutuksista.

LimitClause

Tämä kenttä on funktio, joka vastaanottaa kaksi Int64.Type argumenttia (skip, ), ja palauttaa tietueen, takejossa on kaksi tekstikenttää (Text, Location).

LimitClause = (skip as nullable number, take as number) as record => ...

skip Parametri on ohitettujen rivien määrä (eli OFFSET-funktion argumentti). Jos siirtymää ei määritetä, ohitusarvo on tyhjäarvo. Jos ohjain tukee LIMIT-arvoa, mutta ei tue OFFSET-funktiota, funktion LimitClause pitäisi palauttaa yksinkertaistamaton virhesanoma (...), kun ohitus on suurempi kuin 0.

take Parametri on ottavien rivien määrä (eli LIMIT-argumentti).

Tuloksen Text kenttä sisältää luotuun kyselyyn lisättävän SQL-tekstin.

Kenttä Location määrittää, minne -lause lisätään. Seuraavassa taulukossa kuvataan tuetut arvot.

Arvo Kuvaus Esimerkki:
AfterQuerySpecification LIMIT-lause sijoitetaan luodun SQL:n loppuun.

Tämä on yleisimmin tuettu LIMIT-syntaksi.
VALITSE a, b, c

FROM-taulukko

> JOSSA 10

RAJOITUS 5
BeforeQuerySpecification LIMIT-lause annetaan luodun SQL-lausekkeen eteen. RAJOITA 5 RIVIÄ

VALITSE a, b, c

FROM-taulukko

> JOSSA 10
AfterSelect LIMIT-funktio menee SELECT-lausekkeen jälkeen ja minkä tahansa muuntajan (kuten DISTINCT) jälkeen. VALITSE DISTINCT LIMIT 5 a, b, c

FROM-taulukko

> JOSSA 10
AfterSelectBeforeModifiers LIMIT-arvo menee SELECT-lausekkeen jälkeen, mutta ennen muita muokkareita (kuten DISTINCT). VALITSE RAJOITA 5 ERILLISTÄ A, b, c

FROM-taulukko

> JOSSA 10

Seuraava koodikatkelma tarjoaa LimitClause-toteutuksen ohjaimelle, joka odottaa LIMIT-lausetta valinnaisella OFFSET-lausekkeella seuraavassa muodossa: [OFFSET <offset> ROWS] LIMIT <row_count>

LimitClause = (skip, take) =>
    let
        offset = if (skip > 0) then Text.Format("OFFSET #{0} ROWS", {skip}) else "",
        limit = if (take <> null) then Text.Format("LIMIT #{0}", {take}) else ""
    in
        [
            Text = Text.Format("#{0} #{1}", {offset, limit}),
            Location = "AfterQuerySpecification"
        ]

Seuraava koodikatkelma tarjoaa toteutuksen LimitClause ohjainta varten, joka tukee LIMIT-arvoa, mutta ei OFFSET-arvoa. Muoto: LIMIT <row_count>.

LimitClause = (skip, take) =>
    if (skip > 0) then error "Skip/Offset not supported"
    else
    [
        Text = Text.Format("LIMIT #{0}", {take}),
        Location = "AfterQuerySpecification"
    ]

SqlCapabilitiesin ohittaminen

Field Tietoja
FractionalSecondsScale Lukuarvo väliltä 1–7, joka ilmaisee millisekunnin arvoille tuettujen desimaalien määrän. Tämän arvon määrittävät liittimet, jotka haluavat ottaa kyselyn lähteeseen päivämäärä- ja aika-arvojen kautta.

Oletus: tyhjäarvo
PrepareStatements Looginen arvo, joka ilmaisee, että lausekkeet tulee valmistella SQLPrepare-toiminnolla.

Oletus: epätosi
SupportsTop Looginen arvo, joka ilmaisee, että ohjain tukee TOP-lausetta palautettujen rivien määrän rajoittamiseksi.

Oletus: epätosi
StringLiteralEscapeCharacters Luettelo tekstiarvoista, jotka määrittävät merkkijonoliteraalit ja LIKE-lausekkeet ohjausmerkkijonossa käytettävät merkit.

Esimerkki: {""}

Oletus: tyhjäarvo
SupportsDerivedTable Looginen arvo, joka ilmaisee, että ohjain tukee johdettuja taulukoita (alivalinnat).

Tämän arvon oletetaan olevan true ohjaimille, jotka määrittävät niiden vastaavuustasoksi SQL_SC_SQL92_FULL (kuljettajan ilmoittama tai Sql92Conformance-asetuksen ohittama. Kaikkien muiden vastaavuustasojen arvon oletusarvo on false.

Jos ohjain ei ilmoita SQL_SC_SQL92_FULL yhteensopivuustasoa mutta tukee johdettuja taulukoita, määritä tämän arvon arvoksi true.

Johdannaistaulukoiden tuki vaaditaan monissa DirectQuery-skenaarioissa.
SupportsNumericLiterals Looginen arvo, joka ilmaisee, tuleeko luodun SQL:n sisältää numeerisia literaaliarvoja. Kun arvoksi on määritetty epätosi, numeeriset arvot määritetään aina parametrien sidonnan avulla.

Oletus: epätosi
SupportsStringLiterals Looginen arvo, joka ilmaisee, tuleeko luodun SQL:n sisältää merkkijonoliteraaliarvot. Kun asetuksena on false, merkkijonoarvot määritetään aina parametrisidonnan avulla.

Oletus: epätosi
SupportsOdbcDateLiterals Looginen arvo, joka ilmaisee, tuleeko luodun SQL:n sisältää päivämääräliteraaliarvot. Kun arvona on epätosi, päivämääräarvot määritetään aina parametrien sidonnan avulla.

Oletus: epätosi
SupportsOdbcTimeLiterals Looginen arvo, joka ilmaisee, tuleeko luodun SQL:n sisältää aikaliteraaliarvot. Kun arvona on epätosi, aika-arvot määritetään aina parametrien sidonnan avulla.

Oletus: epätosi
SupportsOdbcTimestampLiterals Looginen arvo, joka ilmaisee, tuleeko luodun SQL:n sisältää aikaleiman literaaliarvot. Kun arvoksi on määritetty epätosi, aikaleima-arvot määritetään aina parametrin sidonnan avulla.

Oletus: epätosi

SQLColumns-sarakkeen ohittaminen

SQLColumns on funktiokäsittelijä, joka vastaanottaa ODBC-kutsun tulokset SQLColumnsille. Lähdeparametri sisältää taulukon, joka sisältää tietotyypin tiedot. Tätä ohitusta käytetään yleensä korjaamaan tietotyyppiristiriidoita -kutsujen ja SQLColumns-kutsujen SQLGetTypeInfo välillä.

Lisätietoja lähdetaulukkoparametrin muodosta on kohdassa SQLColumns Function.

SQLGetFunctionsin ohittaminen

Tämän kentän avulla ohitetaan SQLFunctions ODBC-ohjaimen palauttamat arvot. Se sisältää tietueen, jonka kenttien nimet ovat samat kuin FunctionId ODBC SQLGetFunctions -funktiolle määritetyt vakiot . Numeeriset vakiot kullekin näistä kentistä löytyvät ODBC-määrityksestä.

Field Tietoja
SQL_CONVERT_FUNCTIONS Ilmaisee, mitä funktioita tuetaan tyyppimuunnoksia käytettäessä. M-moduuli yrittää oletusarvoisesti käyttää CONVERT-funktiota. Ohjaimet, jotka haluavat käyttää CAST-funktiota, voivat ohittaa tämän arvon ja ilmoittaa, että vain SQL_FN_CVT_CAST (numeerinen arvo 0x2) tuetaan.
SQL_API_SQLBINDCOL Looginen arvo (tosi/epätosi), joka ilmaisee, tuleeko koostemoduulin käyttää SQLBindCol-ohjelmointirajapintaa tietoja noudettaessa. Kun arvo on epätosi, käytetään sen sijaan SQLGetDataa .

Oletus: epätosi

Seuraava koodikatkelman esimerkki antaa esimerkin, jossa M-moduulia kehotetaan käyttämään MUUNTO-funktion sijaan MUUNTO-funktiota.

SQLGetFunctions = [
    SQL_CONVERT_FUNCTIONS = 0x2 /* SQL_FN_CVT_CAST */
]

SQLGetInfo-funktion ohittaminen

Tämän kentän avulla ohitetaan SQLGetInfo ODBC-ohjaimen palauttamat arvot. Se sisältää tietueen, jonka kenttien nimet ovat samat kuin InfoType ODBC SQLGetInfo -funktiolle määritetyt vakiot. Numeeriset vakiot kullekin näistä kentistä löytyvät ODBC-määrityksestä. Täydellinen valittu luettelo InfoTypes löytyy koostemoduulin jäljitystiedostoista.

Seuraavassa taulukossa on usein ohitkeita SQLGetInfo ominaisuuksia:

Field Tietoja
SQL_SQL_CONFORMANCE Kokonaislukuarvo, joka ilmaisee ohjaimen tukeman SQL-92-tason:

(1) SQL_SC_SQL92_ENTRY: perustason SQL-92-yhteensopiva.
(2) SQL_SC_FIPS127_2_TRANSITIONAL: SIIRTYMÄTASON mukainen FIPS 127-2.
(4) SQL_SC_ SQL92_INTERMEDIATE" Keskitason SQL-92-yhteensopiva.
(8) SQL_SC_SQL92_FULL: Full level SQL-92 -yhteensopiva.

Power Query -skenaarioissa liitintä käytetään Vain luku -tilassa. Useimmat ohjaimet haluavat ilmoittaa SQL_SC_SQL92_FULL yhteensopivuustason ja ohittaa tietyn SQL-luontitoiminnon -ja SQLGetFunctions -SQLGetInfoominaisuuksien avulla.
SQL_SQL92_PREDICATES Bittikartta, joka luetteloi SELECT-lauseessa tuetut predikaatit SQL-92:ssa määritetyllä tavalla.

Siirry odbc-määrityksen SQL_SP_*-vakioihin .
SQL_AGGREGATE_FUNCTIONS Bittikartta, joka luetteloi koostamisfunktioiden tuen.

SQL_AF_ALL
SQL_AF_AVG
SQL_AF_COUNT
SQL_AF_DISTINCT
SQL_AF_MAX
SQL_AF_MIN
SQL_AF_SUM

Siirry ODBC-määrityksessä kohtaan SQL_AF_* .
SQL_GROUP_BY Kokonaislukuarvo, joka määrittää GROUP BY -lauseen sarakkeiden ja valintaluettelon koostamattomien sarakkeiden välisen suhteen:

SQL_GB_COLLATE: COLLATE-lause voidaan määrittää kunkin ryhmittelysarakkeen lopussa.

SQL_GB_NOT_SUPPORTED: GROUP BY -lausekkeita ei tueta.

SQL_GB_GROUP_BY_EQUALS_SELECT: GROUP BY -lauseen on sisällettävä kaikki valitsemisluettelon sarakkeet, joita ei ole koostettu. Se ei voi sisältää muita sarakkeita. VALITSE ESIMERKIKSI OSASTO, MAX(PALKKA) TYÖNTEKIJÄRYHMÄSTÄ OSASTOITTAIN.

SQL_GB_GROUP_BY_CONTAINS_SELECT: GROUP BY -lauseen on sisällettävä kaikki valitsemisluettelon sarakkeet, joita ei ole koostettu. Se voi sisältää sarakkeita, jotka eivät ole valitse-luettelossa. VALITSE ESIMERKIKSI OSASTO, MAX(PALKKA) TYÖNTEKIJÄRYHMÄSTÄ OSASTO:N JA IÄN MUKAAN.

SQL_GB_NO_RELATION: GROUP BY -lauseen ja valintaluettelon sarakkeet eivät liity toisiinsa. Valintaluettelon ryhmittelemättömien, koostamattomien sarakkeiden merkitys on tietolähteestä riippuvainen. VALITSE ESIMERKIKSI OSASTO, PALKKA TYÖNTEKIJÄRYHMÄSTÄ OSASTO: IKÄ.

Siirry ODBC-määrityksessä kohtaan SQL_GB_* .

Seuraavaa apufunktiota voidaan käyttää bitmask-arvojen luomiseen kokonaislukuarvojen luettelosta:

Flags = (flags as list) =>
    let
        Loop = List.Generate(
                  ()=> [i = 0, Combined = 0],
                  each [i] < List.Count(flags),
                  each [i = [i]+1, Combined =*Number.BitwiseOr([Combined], flags{i})],
                  each [Combined]),
        Result = List.Last(Loop, 0)
    in
        Result;

SQLGetTypeInfo-funktion ohittaminen

SQLGetTypeInfo voidaan määrittää kahdella tavalla:

  • Kiinteä table arvo, joka sisältää samat tyyppitiedot kuin ODBC-kutsu kohteelle SQLGetTypeInfo.
  • Funktio, joka hyväksyy taulukkoargumentin ja palauttaa taulukon. -argumentti sisältää ODBC-kutsun alkuperäisen tuloksen.SQLGetTypeInfo Funktion toteutuksella voidaan muokata tätä taulukkoa tai lisätä siihen.

Ensimmäisen lähestymistavan avulla kumotaan täysin ODBC-ohjaimen palauttamat arvot. Toista menetelmää käytetään, jos haluat lisätä tai muokata näitä arvoja.

Lisätietoja tyyppitaulukkoparametrin muodosta ja odotetusta palautusarvosta on artikkelissa SQLGetTypeInfo-funktion viittaus.

SQLGetTypeInfo staattista taulukkoa käyttämällä

Seuraava koodikatkelman staattinen toteutus sovellukselle SQLGetTypeInfoon .

SQLGetTypeInfo = #table(
    { "TYPE_NAME",      "DATA_TYPE", "COLUMN_SIZE", "LITERAL_PREF", "LITERAL_SUFFIX", "CREATE_PARAS",           "NULLABLE", "CASE_SENSITIVE", "SEARCHABLE", "UNSIGNED_ATTRIBUTE", "FIXED_PREC_SCALE", "AUTO_UNIQUE_VALUE", "LOCAL_TYPE_NAME", "MINIMUM_SCALE", "MAXIMUM_SCALE", "SQL_DATA_TYPE", "SQL_DATETIME_SUB", "NUM_PREC_RADIX", "INTERNAL_PRECISION", "USER_DATA_TYPE" }, {

    { "char",           1,          65535,          "'",            "'",              "max. length",            1,          1,                3,            null,                 0,                  null,                "char",            null,            null,            -8,              null,               null,             0,                    0                }, 
    { "int8",           -5,         19,             "'",            "'",              null,                     1,          0,                2,            0,                    10,                 0,                   "int8",            0,               0,               -5,              null,               2,                0,                    0                },
    { "bit",            -7,         1,              "'",            "'",              null,                     1,          1,                3,            null,                 0,                  null,                "bit",             null,            null,            -7,              null,               null,             0,                    0                },
    { "bool",           -7,         1,              "'",            "'",              null,                     1,          1,                3,            null,                 0,                  null,                "bit",             null,            null,            -7,              null,               null,             0,                    0                },
    { "date",           9,          10,             "'",            "'",              null,                     1,          0,                2,            null,                 0,                  null,                "date",            null,            null,            9,               1,                  null,             0,                    0                }, 
    { "numeric",        3,          28,             null,           null,             null,                     1,          0,                2,            0,                    0,                   0,                  "numeric",         0,               0,               2,               null,               10,               0,                    0                },
    { "float8",         8,          15,             null,           null,             null,                     1,          0,                2,            0,                    0,                   0,                  "float8",          null,            null,            6,               null,               2,                0,                    0                },
    { "float8",         6,          17,             null,           null,             null,                     1,          0,                2,            0,                    0,                   0,                  "float8",          null,            null,            6,               null,               2,                0,                    0                },
    { "uuid",           -11,        37,             null,           null,             null,                     1,          0,                2,            null,                 0,                  null,                "uuid",            null,            null,            -11,             null,               null,             0,                    0                },
    { "int4",           4,          10,             null,           null,             null,                     1,          0,                2,            0,                    0,                   0,                  "int4",            0,               0,               4,               null,               2,                0,                    0                },
    { "text",           -1,         65535,          "'",            "'",              null,                     1,          1,                3,            null,                 0,                  null,                "text",            null,            null,            -10,             null,               null,             0,                    0                },
    { "lo",             -4,         255,            "'",            "'",              null,                     1,          0,                2,            null,                 0,                  null,                "lo",              null,            null,            -4,              null,               null,             0,                    0                }, 
    { "numeric",        2,          28,             null,           null,             "precision, scale",       1,          0,                2,            0,                    10,                 0,                   "numeric",         0,               6,               2,               null,               10,               0,                    0                },
    { "float4",         7,          9,              null,           null,             null,                     1,          0,                2,            0,                    10,                 0,                   "float4",          null,            null,            7,               null,               2,                0,                    0                }, 
    { "int2",           5,          19,             null,           null,             null,                     1,          0,                2,            0,                    10,                 0,                   "int2",            0,               0,               5,               null,               2,                0,                    0                }, 
    { "int2",           -6,         5,              null,           null,             null,                     1,          0,                2,            0,                    10,                 0,                   "int2",            0,               0,               5,               null,               2,                0,                    0                }, 
    { "timestamp",      11,         26,             "'",            "'",              null,                     1,          0,                2,            null,                 0,                  null,                "timestamp",       0,               38,              9,               3,                  null,             0,                    0                }, 
    { "date",           91,         10,             "'",            "'",              null,                     1,          0,                2,            null,                 0,                  null,                "date",            null,            null,            9,               1,                  null,             0,                    0                }, 
    { "timestamp",      93,         26,             "'",            "'",              null,                     1,          0,                2,            null,                 0,                  null,                "timestamp",       0,               38,              9,               3,                  null,             0,                    0                }, 
    { "bytea",          -3,         255,            "'",            "'",              null,                     1,          0,                2,            null,                 0,                  null,                "bytea",           null,            null,            -3,              null,               null,             0,                    0                }, 
    { "varchar",        12,         65535,          "'",            "'",              "max. length",            1,          0,                2,            null,                 0,                  null,                "varchar",         null,            null,           -9,               null,               null,             0,                    0                }, 
    { "char",           -8,         65535,          "'",            "'",              "max. length",            1,          1,                3,            null,                 0,                  null,                "char",            null,            null,           -8,               null,               null,             0,                    0                }, 
    { "text",           -10,        65535,          "'",            "'",              "max. length",            1,          1,                3,            null,                 0,                  null,                "text",            null,            null,           -10,              null,               null,             0,                    0                }, 
    { "varchar",        -9,         65535,          "'",            "'",              "max. length",            1,          1,                3,            null,                 0,                  null,                "varchar",         null,            null,           -9,               null,               null,             0,                    0                },
    { "bpchar",         -8,         65535,           "'",            "'",              "max. length",            1,          1,                3,            null,                 0,                  null,                "bpchar",          null,            null,            -9,               null,               null,            0,                    0                } }
);

SQLGetTypeInfo funktion avulla

Seuraavat koodikatkelmat liittävät bpchar tyypin kuljettajan palauttamiin olemassa oleviin tyyppeihin.

SQLGetTypeInfo = (types as table) as table =>
   let
       newTypes = #table(
           {
               "TYPE_NAME",
               "DATA_TYPE",
               "COLUMN_SIZE",
               "LITERAL_PREF",
               "LITERAL_SUFFIX",
               "CREATE_PARAS",
               "NULLABLE",
               "CASE_SENSITIVE",
               "SEARCHABLE",
               "UNSIGNED_ATTRIBUTE",
               "FIXED_PREC_SCALE",
               "AUTO_UNIQUE_VALUE",
               "LOCAL_TYPE_NAME",
               "MINIMUM_SCALE",
               "MAXIMUM_SCALE",
               "SQL_DATA_TYPE",
               "SQL_DATETIME_SUB",
               "NUM_PREC_RADIX",
               "INTERNAL_PRECISION",
               "USER_DATA_TYPE"
            },
            // we add a new entry for each type we want to add
            {
                {
                    "bpchar",
                    -8,
                    65535,
                    "'",
                    "'",
                    "max. length",
                    1,
                    1,
                    3,
                    null,
                    0,
                    null,
                    "bpchar",
                    null,
                    null,
                    -9,
                    null,
                    null,
                    0,
                    0
                }
            }),
        append = Table.Combine({types, newTypes})
    in
        append;

yhteysmerkkijono määrittäminen

ODBC-ohjaimen yhteysmerkkijono määritetään käyttämällä odbc.datasource- ja Odbc.Query-funktioiden ensimmäistä argumenttia. Arvo voi olla teksti tai M-tietue. Kun käytät tietuetta, tietueen jokaisesta kentästä tulee ominaisuus yhteysmerkkijono. Kaikki yhteysmerkkijono edellyttävät Driver kenttää (tai DSN kenttää, jos haluat, että käyttäjät määrittävät ennalta järjestelmätason DSN:n). Tunnistetietoihin liittyvät ominaisuudet määritetään erikseen. Muut ominaisuudet ovat ohjainkohtaisia.

Alla olevassa koodikatkelmassa näytetään uuden tietolähdefunktion määritys, tietueen ConnectionString luonti ja Odbc.DataSource-funktion kutsuminen.

[DataSource.Kind="SqlODBC", Publish="SqlODBC.Publish"]
shared SqlODBC.Contents = (server as text) =>
    let
        ConnectionString = [
            Driver = "SQL Server Native Client 11.0",
            Server = server,
            MultiSubnetFailover = "Yes",
            ApplicationIntent = "ReadOnly",
            APP = "PowerBICustomConnector"
        ],
        OdbcDatasource = Odbc.DataSource(ConnectionString)
    in
        OdbcDatasource;

Seuraavat vaiheet