Parametre pre Odbc.DataSource
Funkcia Odbc.DataSource má dva parametre – connectionString
a pre ovládač a options
záznam, ktorý umožňuje prepísať rôzne správania vodiča. Pomocou záznamu možností môžete prepísať funkcie a ďalšie informácie, ktoré uvádza ovládač, ovládať správanie navigátora a ovplyvniť dotazy SQL vygenerované nástrojom M.
Polia podporovaných možností záznamov spadajú do dvoch kategórií – tie, ktoré sú verejné a vždy dostupné, a tie, ktoré sú k dispozícii len v kontexte rozšíriteľnosti.
Nasledujúca tabuľka popisuje verejné polia v zázname možností.
Pole | Description |
---|---|
CommandTimeout |
Hodnota trvania, ktorá určuje, ako dlho má dotaz na strane servera povolené byť spustený, predtým ako sa zruší. Predvolená hodnota: 10 minút |
ConnectionTimeout |
Hodnota trvania, ktorá určuje, ako dlho sa má počkať, kým sa odmietne pokus o vytvorenie pripojenia na server. Predvolená hodnota: 15 sekúnd |
CreateNavigationProperties |
Logická hodnota, ktorá nastavuje, či sa majú generovať vlastnosti navigácie vo vrátených tabuľkách. Vlastnosti navigácie sú založené na vzťahoch cudzieho kľúča, ktoré uvádza ovládač. Tieto vlastnosti sa zobrazujú ako "virtuálne" stĺpce, ktoré je možné rozbaliť v editore dotazov a vytvoriť vhodné spojenie. Ak výpočet závislostí cudzieho kľúča predstavuje pre váš ovládač náročnú operáciu, možno budete chcieť nastaviť túto hodnotu na hodnotu false. Predvolená hodnota: true |
HierarchicalNavigation |
Logická hodnota, ktorá nastavuje, či sa majú zobraziť tabuľky zoskupené podľa názvov schémy. Keď je nastavená hodnota false, tabuľky sa zobrazia v zjednodušenom zozname pod každou databázou. Predvolená hodnota: False |
SqlCompatibleWindowsAuth |
Logická hodnota, ktorá určuje, či sa má pri použití overovania systému Windows vyprodukovať reťazec pripojenia kompatibilný s SQL ServeromTrusted_Connection=Yes .Ak váš ovládač podporuje overovanie systému Windows, ale vo vašom reťazec pripojenia vyžaduje dodatočné alebo alternatívne nastavenia, mali by ste túto hodnotu nastaviť na hodnotu false a použiť CredentialConnectionString pole záznamov možností popísané v nasledujúcej tabuľke.Predvolená hodnota: true |
Nasledujúca tabuľka popisuje polia záznamov možností, ktoré sú k dispozícii len prostredníctvom rozšíriteľnosti. Polia, ktoré nie sú jednoduché literálové hodnoty, sú popísané v ďalších sekciách.
Pole | Description |
---|---|
AstVisitor |
Záznam obsahujúci jedno alebo viac prepísaní na riadenie generovania dotazu SQL. Najbežnejšie použitie tohto poľa je poskytnutie logiky na generovanie klauzuly LIMIT/OFFSET pre ovládače, ktoré nepodporujú funkciu TOP. Polia zahŕňajú Constant a LimitClause .Ďalšie informácie: Prepisovanie rozhrania AstVisitor |
CancelQueryExplicitly |
Logická hodnota, ktorá dáva pokyn nástroju M, aby explicitne zrušil všetky spustené volania prostredníctvom ovládača ODBC pred ukončením pripojenia k serveru ODBC. Toto pole je užitočné v situáciách, keď sa vykonanie dotazu spravuje nezávisle od sieťových pripojení k serveru, napríklad v niektorých nasadeniach služby Spark. Vo väčšine prípadov túto hodnotu nie je potrebné nastaviť, pretože po ukončení sieťového pripojenia k serveru sa dotaz na serveri zruší. Predvolená hodnota: False |
ClientConnectionPooling |
Logická hodnota, ktorá umožňuje združovanie pripojení na strane klienta pre ovládač ODBC. Väčšina vodičov bude chcieť nastaviť túto hodnotu na hodnotu true. Predvolená hodnota: False |
CredentialConnectionString |
Textová hodnota alebo hodnota záznamu, ktorá sa používa na špecifikáciu vlastností reťazec pripojenia súvisiacich s prihlasovacími povereniami. |
HideNativeQuery |
Logická hodnota, ktorá určuje, či sa v konektore zobrazujú vygenerované príkazy SQL v používateľskom prostredí doplnku Power Query. Toto by malo byť nastavené na hodnotu true iba v prípade, že serverový zdroj údajov natívne podporuje SQL-92. Predvolená hodnota: False |
ImplicitTypeConversions |
Hodnota tabuľky obsahujúca implicitné konverzie typu podporované ovládačom alebo serverom backendu. Hodnoty v tejto tabuľke sa pripočítajú k konverziám hláseným samotným ovládačom. Toto pole sa zvyčajne používa s poľom SQLGetTypeInfo pri prepisovaní informácií o type údajov hlásených vodičom. |
OnError |
Funkcia spracovania chýb, ktorá prijíma errorRecord parameter typu record .K bežnému použitiu tejto funkcie patrí spracovanie zlyhaní pripojenia SSL, poskytnutie prepojenia na stiahnutie v prípade, že sa v systéme nenájde ovládač a hlásenie chýb overovania. |
SoftNumbers |
Umožňuje nástroju M vybrať kompatibilný typ údajov pri konverzii medzi dvomi konkrétnymi číselnými typmi, ktorá nie je deklarovaná ako podporovaná v možnostiach SQL_CONVERT_*. Predvolená hodnota: False |
SqlCapabilities |
Záznam, ktorý poskytuje rôzne prepísania možností ovládačov a spôsob na určenie možností, ktoré nie sú vyjadrené prostredníctvom rozhrania ODBC 3.8. Ďalšie informácie: Prepisovanie funkcií SqlCapabilities |
SQLColumns |
Funkcia, ktorá umožňuje upraviť metaúdaje stĺpca vrátené funkciou SQLColumns .Ďalšie informácie: Prepísanie funkcie SQLColumns |
SQLGetFunctions |
Záznam, ktorý umožňuje prepísať hodnoty vrátené volaniami do SQLGetFunctions .Bežným použitím tohto poľa je zakázanie použitia väzby parametra alebo určenie, že vygenerované dotazy by mali používať funkciu CAST namiesto funkcie CONVERT. Ďalšie informácie: Prepisovanie funkcií SQLGetFunctions |
SQLGetInfo |
Záznam, ktorý umožňuje prepísať hodnoty vrátené volaniami do SQLGetInfo .Ďalšie informácie: Prepísanie sqlGetInfo |
SQLGetTypeInfo |
Tabuľka alebo funkcia, ktorá vráti tabuľku, ktorá prepíše informácie o type vrátené funkciou SQLGetTypeInfo .Keď je hodnota nastavená na tabuľku, hodnota úplne nahradí informácie o type, ktoré uvádza ovládač. SQLGetTypeInfo nevolá sa .Keď je hodnota nastavená na funkciu, funkcia dostane výsledok pôvodného volania na SQLGetTypeInfo , čo vám umožní upraviť tabuľku.Toto pole sa zvyčajne používa v prípade, že existuje nesúlad medzi typmi údajov hlásenými v entite SQLGetTypeInfo a SQLColumns .Ďalšie informácie: Prepísanie príkazu SQLGetTypeInfo |
SQLTables |
Funkcia, ktorá umožňuje upraviť metaúdaje tabuľky vrátené volaním funkcie SQLTables . |
TolerateConcatOverflow |
Umožňuje výskytu zreťazenia textových hodnôt dokonca aj vtedy, ak sa výsledok môže skrátiť tak, aby sa zmestil do rozsahu dostupného typu. Napríklad pri zreťazení poľa VARCHAR(4000) s poľom VARCHAR(4000) v systéme, ktorý podporuje maximalizovanú veľkosť varchar 4000 a žiadny typ CLOB, zreťazenie sa zreťazí, aj keď sa výsledok môže skrátiť. Predvolená hodnota: False |
UseEmbeddedDriver |
(interné použitie): Logická hodnota, ktorá určuje, či sa má ovládač ODBC načítať z lokálneho adresára (pomocou novej funkcie definovanej v špecifikácii ODBC 4.0). Túto hodnotu zvyčajne nastavujú len konektory vytvorené spoločnosťou Microsoft, ktoré odosielaujú údaje pomocou doplnku Power Query. Keď je nastavená hodnota false, na vyhľadanie a načítanie ovládača sa použije správca ovládačov ODBC systému. Väčšina konektorov by toto pole nemala nastavovať. Predvolená hodnota: False |
Prepísanie aplikácie AstVisitor
Pole AstVisitor
je nastavené prostredníctvom záznamu možností Odbc.DataSource . Používa sa na úpravu príkazov SQL vygenerovaných pre konkrétne scenáre dotazov.
Poznámka
Ovládače, ktoré podporujú klauzuly LIMIT a OFFSET (namiesto TOP), budú chcieť prepísať LimitClause
.AstVisitor
Konštanta
Poskytnutie prepísanie pre túto hodnotu je zastarané a z budúcich implementácií môže byť odstránené.
LimitClause
Toto pole je funkciou, ktorá prijíma dva Int64.Type
argumenty (skip
, take
) a vráti záznam s dvomi textovými poľami (Text
, Location
).
LimitClause = (skip as nullable number, take as number) as record => ...
Parameter skip
je počet riadkov, ktoré sa majú vynechať (to znamená argument na posun). Ak posun nie je zadaný, hodnota vynechania bude null. Ak váš ovládač podporuje funkciu LIMIT, ale nepodporuje funkciu OFFSET, LimitClause
funkcia by mala vrátiť neimplementovanú chybu (...) pri preskočiť väčšiu ako 0.
Parameter take
je počet riadkov, ktoré sa majú prijať (to znamená argument funkcie LIMIT).
Pole Text
výsledku obsahuje text SQL, ktorý sa má pridať do vygenerovaného dotazu.
Pole Location
určuje, kam sa má vložiť klauzula. Nasledujúca tabuľka popisuje podporované hodnoty.
Hodnota | Description | Príklad |
---|---|---|
AfterQuerySpecification |
Klauzula LIMIT sa nachádza na konci generovaného SQL. Toto je najčastejšie podporovaná syntax LIMIT. |
VYBERTE a, b, c Z tabuľky > KDE 10 LIMIT 5 |
BeforeQuerySpecification |
Klauzula LIMIT sa nachádza pred vygenerovaným príkazom SQL. | OBMEDZTE POČET RIADKOV: 5 VYBERTE a, b, c Z tabuľky > KDE 10 |
AfterSelect |
Funkcia LIMIT nasleduje za príkazom SELECT a po všetkých modifikátoroch (napríklad DISTINCT). | VYBERTE POLOŽKU DISTINCT LIMIT 5 a, b, c Z tabuľky > KDE 10 |
AfterSelectBeforeModifiers |
Funkcia LIMIT nasleduje za príkazom SELECT, ale pred akýmikoľvek modifikátormi (napríklad DISTINCT). | VYBERTE LIMIT 5 DISTINCT a, b, c Z tabuľky > KDE 10 |
Nasledujúci úryvok kódu poskytuje implementáciu LimitClause pre ovládač, ktorý očakáva klauzulu LIMIT s voliteľnou službou OFFSET v nasledujúcom formáte: [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"
]
Nasledujúci zlomok kódu poskytuje implementáciu LimitClause
pre ovládač, ktorý podporuje funkciu LIMIT, ale nie OFFSET. Formát: LIMIT <row_count>
.
LimitClause = (skip, take) =>
if (skip > 0) then error "Skip/Offset not supported"
else
[
Text = Text.Format("LIMIT #{0}", {take}),
Location = "AfterQuerySpecification"
]
Prepisovanie funkcií SqlCapabilities
Pole | Podrobnosti |
---|---|
FractionalSecondsScale |
Číselná hodnota v rozsahu od 1 do 7 udávajúceho počet desatinných miest podporovaných pre milisekundové hodnoty. Túto hodnotu majú nastaviť konektory, ktoré chcú povoliť skladanie dotazov v hodnotách typu datetime. Predvolená hodnota: null |
PrepareStatements |
Logická hodnota, ktorá označuje, že príkazy by mali byť pripravené pomocou funkcie SQLPrepare. Predvolená hodnota: False |
SupportsTop |
Logická hodnota, ktorá označuje, že ovládač podporuje klauzulu TOP na obmedzenie počtu vrátených riadkov. Predvolená hodnota: False |
StringLiteralEscapeCharacters |
Zoznam textových hodnôt, ktoré určujú znaky, ktoré sa majú použiť pri úteku pred literálmi reťazca a výrazmi LIKE. Príklad: {""} Predvolená hodnota: null |
SupportsDerivedTable |
Logická hodnota, ktorá označuje, že ovládač podporuje odvodené tabuľky (čiastkové výbery). Predpokladá sa, že táto hodnota je true pre ovládače, ktoré nastavujú úroveň ich zhody na SQL_SC_SQL92_FULL (ako uvádza ovládač alebo prepísaný nastavením Sql92Conformance. Pre všetky ostatné úrovne zhody je táto hodnota predvolene nastavená na hodnotu false. Ak váš ovládač nenahlási úroveň súladu SQL_SC_SQL92_FULL, ale podporuje odvodené tabuľky, nastavte túto hodnotu na true. Podpora odvodených tabuliek sa vyžaduje v prípade mnohých scenárov DirectQuery. |
SupportsNumericLiterals |
Logická hodnota, ktorá udáva, či by vygenerovaný SQL mal obsahovať číselné hodnoty literálov. Keď je nastavená hodnota false, číselné hodnoty sa vždy zadávajú pomocou väzby parametra. Predvolená hodnota: False |
SupportsStringLiterals |
Logická hodnota, ktorá udáva, či by vygenerovaný SQL mal obsahovať hodnoty literálov reťazca. Pri nastavení na hodnotu false sa hodnoty reťazca vždy zadávajú pomocou väzby parametra. Predvolená hodnota: False |
SupportsOdbcDateLiterals |
Logická hodnota, ktorá udáva, či by vygenerovaný SQL mal obsahovať hodnoty dátumových literálov. Keď je nastavená hodnota false, dátumové hodnoty sa vždy zadávajú pomocou väzby parametra. Predvolená hodnota: False |
SupportsOdbcTimeLiterals |
Logická hodnota, ktorá udáva, či by vygenerovaný SQL mal obsahovať hodnoty časových literálov. Pri nastavení na hodnotu false sa časové hodnoty vždy zadávajú pomocou väzby parametra. Predvolená hodnota: False |
SupportsOdbcTimestampLiterals |
Logická hodnota, ktorá udáva, či by vygenerovaný SQL mal obsahovať hodnoty literálov časovej pečiatky. Keď je nastavená hodnota false, hodnoty časovej pečiatky sa vždy zadávajú pomocou väzby parametra. Predvolená hodnota: False |
Prepisovanie stĺpcov SQLColumns
SQLColumns
je obslužný program funkcie, ktorý prijíma výsledky volania ODBC do sqlColumns. Zdrojový parameter obsahuje tabuľku s informáciami o type údajov. Toto prepísanie sa zvyčajne používa na opravu nesúladov typov údajov medzi volaniami a SQLGetTypeInfo
SQLColumns
.
Podrobnosti o formáte parametra zdrojovej tabuľky nájdete v časti Funkcia SQLColumns.
Prepisovanie funkcií SQLGetFunctions
Toto pole sa používa na prepísanie SQLFunctions
hodnôt vrátených ovládačom ODBC. Obsahuje záznam, ktorého názvy polí sa FunctionId
rovnajú konštantám definovaným pre funkciu ODBC SQLGetFunctions . Číselné konštanty pre každé z týchto polí možno nájsť v špecifikácii ODBC.
Pole | Podrobnosti |
---|---|
SQL_CONVERT_FUNCTIONS |
Udáva, ktoré funkcie sú podporované pri konverziách typu. V predvolenom nastavení sa nástroj jazyka M pokúša použiť funkciu CONVERT. Ovládače, ktoré preferujú použitie funkcie CAST, môžu túto hodnotu prepísať na zostavu, v ktorej je podporovaná len SQL_FN_CVT_CAST (číselná hodnota 0x2). |
SQL_API_SQLBINDCOL |
Logická hodnota (True/False) určujúca, či by mal nástroj mashup používať rozhranie SQLBindCol API pri načítavaní údajov. Pri nastavení na hodnotu false sa namiesto toho použije SQLGetData . Predvolená hodnota: False |
Nasledujúci zlomok kódu obsahuje príklad, ktorý hovorí nástroju jazyka M, aby používal funkciu CAST namiesto funkcie CONVERT.
SQLGetFunctions = [
SQL_CONVERT_FUNCTIONS = 0x2 /* SQL_FN_CVT_CAST */
]
Prepisovanie sqlGetInfo
Toto pole sa používa na prepísanie SQLGetInfo
hodnôt vrátených ovládačom ODBC. Obsahuje záznam, ktorého polia sú názvy rovné InfoType
konštantám definovaným pre funkciu ODBC SQLGetInfo . Číselné konštanty pre každé z týchto polí možno nájsť v špecifikácii ODBC. Úplný zoznam InfoTypes
skontrolovaných možností nájdete v súboroch sledovania nástroja mashup.
Nasledujúca tabuľka obsahuje bežne prepísané SQLGetInfo
vlastnosti:
Pole | Podrobnosti |
---|---|
SQL_SQL_CONFORMANCE |
Celočíselná hodnota, ktorá označuje úroveň SQL-92 podporovanú ovládačom: (1) SQL_SC_SQL92_ENTRY: Vstupná úroveň SQL-92 je kompatibilná. (2) SQL_SC_FIPS127_2_TRANSITIONAL: Prechodná úroveň FIPS 127-2 je v súlade s prechodným obdobím. (4) SQL_SC_ SQL92_INTERMEDIATE" Kompatibilná s požiadavkami SQL-92 na strednej úrovni. (8) SQL_SC_SQL92_FULL: Kompatibilná s požiadavkami SQL-92 na celej úrovni. V scenároch doplnku Power Query sa konektor používa v režime Iba na čítanie. Väčšina ovládačov bude chcieť nahlásiť úroveň súladu SQL_SC_SQL92_FULL a prepísať konkrétne správanie generovania SQL pomocou SQLGetInfo vlastností a SQLGetFunctions . |
SQL_SQL92_PREDICATES |
Bitová maska vyčíslená predikáty podporované v príkaze SELECT, ako je definované v SQL-92. Prejdite na SQL_SP_* konštanty v špecifikácii ODBC. |
SQL_AGGREGATE_FUNCTIONS |
Podpora kódovania bitovej masky pre agregačné funkcie. SQL_AF_ALL SQL_AF_AVG SQL_AF_COUNT SQL_AF_DISTINCT SQL_AF_MAX SQL_AF_MIN SQL_AF_SUM Prejdite na konštanty SQL_AF_* v špecifikácii ODBC. |
SQL_GROUP_BY |
Celočíselná hodnota, ktorá určuje vzťah medzi stĺpcami v klauzule GROUP BY a neagregovanými stĺpcami v zozname výberu: SQL_GB_COLLATE: Klauzulu COLLATE možno zadať na konci každého stĺpca zoskupenia. SQL_GB_NOT_SUPPORTED: Klauzuly GROUP BY nie sú podporované. SQL_GB_GROUP_BY_EQUALS_SELECT: Klauzula GROUP BY musí obsahovať všetky neagregované stĺpce v zozname výberu. Nemôže obsahovať žiadne ďalšie stĺpce. MÔŽETE NAPRÍKLAD VYBRAŤ POLOŽKU DEPT, MAX(SALARY) ZO SKUPINY ZAMESTNANCOV PODĽA ODDELENIA. SQL_GB_GROUP_BY_CONTAINS_SELECT: Klauzula GROUP BY musí obsahovať všetky neagregované stĺpce v zozname výberu. Môže obsahovať stĺpce, ktoré nie sú v zozname výberu. VYBERTE NAPRÍKLAD POLOŽKY DEPT, MAX(SALARY) ZO SKUPINY ZAMESTNANCOV PODĽA ODDELENIA, VEKU. SQL_GB_NO_RELATION: Stĺpce v klauzule GROUP BY a zoznam výberu nie sú prepojené. Význam zoskupených a neagregovaných stĺpcov v zozname výberu závisí od zdroja údajov. VYBERTE NAPRÍKLAD POLOŽKY DEPT, SALARY ZO SKUPINY ZAMESTNANCOV PODĽA DEPT A AGE. Prejdite na SQL_GB_* konštanty v špecifikácii ODBC. |
Nasledujúcu pomocnú funkciu možno použiť na vytvorenie hodnôt bitovej masky zo zoznamu celočíselných hodnôt:
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;
Prepísanie položky SQLGetTypeInfo
SQLGetTypeInfo
možno zadať dvoma spôsobmi:
- Pevná
table
hodnota, ktorá obsahuje informácie rovnakého typu ako volanie ODBC doSQLGetTypeInfo
. - Funkcia, ktorá prijíma argument tabuľky a vracia tabuľku. Argument obsahuje pôvodné výsledky volania ODBC do
SQLGetTypeInfo
. Implementácia funkcie môže túto tabuľku upraviť alebo pridať.
Prvý prístup sa používa na úplné prepísanie hodnôt vrátených ovládačom ODBC. Druhý prístup sa používa, ak chcete tieto hodnoty pridať alebo upraviť.
Podrobnosti o formáte parametra tabuľky typov a očakávanej vrátenej hodnote nájdete v časti Odkaz na funkciu SQLGetTypeInfo.
SQLGetTypeInfo pomocou statickej tabuľky
Nasledujúci zlomok kódu poskytuje statickú implementáciu pre SQLGetTypeInfo
.
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 pomocou funkcie
Nasledujúce zlomky kódu pripoja bpchar
typ k existujúcim typom vráteným ovládačom.
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;
Nastavenie reťazec pripojenia
Reťazec pripojenia pre ovládač ODBC sa nastaví pomocou prvého argumentu pre funkcie Odbc.DataSource a Odbc.Query. Hodnotou môže byť text alebo M záznam. Pri použití záznamu sa každé pole v zázname stane vlastnosťou v reťazec pripojenia. Všetky reťazec pripojenia vyžadujú Driver
pole (alebo DSN
pole, ak od používateľov vyžaduje, aby najprv nakonfigurali DSN systémovej úrovne). Vlastnosti súvisiace s prihlasovacími povereniami sa nastavia samostatne. Ostatné vlastnosti sú špecifické pre ovládače.
Úryvok kódu nižšie zobrazuje definíciu novej funkcie zdroja údajov, vytvorenie záznamu ConnectionString
a vyvolanie funkcie Odbc.DataSource .
[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;