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 record on 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 SQLGetFunctions palauttamat 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 SQLGetInfo palauttamat arvot.Lisätietoja: SQLGetInfo-funktion ohittaminen |
SQLGetTypeInfo |
Taulukko tai funktio, joka palauttaa taulukon, joka ohittaa kohteen palauttamat SQLGetTypeInfo tyyppitiedot.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 SQLGetTypeInfo tuloksen, 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 |
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
.
Tämän arvon ohituksen antaminen on vanhentunut ja se voidaan poistaa tulevista toteutuksista.
Tämä kenttä on funktio, joka vastaanottaa kaksi Int64.Type
argumenttia (skip
, ), ja palauttaa tietueen, take
jossa 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"
]
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
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.
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 */
]
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 -SQLGetInfo ominaisuuksien 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
voidaan määrittää kahdella tavalla:
- Kiinteä
table
arvo, joka sisältää samat tyyppitiedot kuin ODBC-kutsu kohteelleSQLGetTypeInfo
. - 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.
Seuraava koodikatkelman staattinen toteutus sovellukselle SQLGetTypeInfo
on .
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 } }
);
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;
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;