Parametry pro Odbc.DataSource
Funkce Odbc.DataSource má dva parametry – connectionString
ovladač a options
záznam, který umožňuje přepsat různá chování ovladače. Prostřednictvím záznamu možností můžete přepsat schopnosti a další informace hlášené ovladačem, řídit chování navigátoru a ovlivnit dotazy SQL generované modulem M.
Podporované možnosti zaznamenávají pole do dvou kategorií – těch, které jsou veřejné a vždy dostupné, a ty, které jsou k dispozici pouze v kontextu rozšiřitelnosti.
Následující tabulka popisuje veřejná pole v záznamu možností.
Pole | Popis |
---|---|
CommandTimeout |
Hodnota doby trvání, která určuje, jak dlouho může dotaz na straně serveru běžet před zrušením. Výchozí hodnota: 10 minut |
ConnectionTimeout |
Hodnota doby trvání, která určuje dobu čekání před opuštěním pokusu o připojení k serveru. Výchozí hodnota: 15 sekund |
CreateNavigationProperties |
Logická hodnota, která nastaví, zda se mají generovat navigační vlastnosti ve vrácených tabulkách. Vlastnosti navigace jsou založeny na relacích cizích klíčů hlášených ovladačem. Tyto vlastnosti se zobrazují jako "virtuální" sloupce, které je možné rozbalit v editoru dotazů a vytvořit odpovídající spojení. Pokud je výpočet závislostí cizího klíče nákladnou operací pro ovladač, můžete tuto hodnotu nastavit na false. Výchozí: true |
HierarchicalNavigation |
Logická hodnota, která nastaví, jestli se mají zobrazit tabulky seskupené podle názvů schémat. Pokud je nastavená hodnota false, tabulky se zobrazí v plochém seznamu v každé databázi. Výchozí hodnota: false |
SqlCompatibleWindowsAuth |
Logická hodnota, která určuje, zda se má při použití ověřováníTrusted_Connection=Yes systému Windows vytvořit kompatibilní připojovací řetězec SQL Serveru.Pokud ovladač podporuje ověřování systému Windows, ale vyžaduje další nebo alternativní nastavení ve vašem připojovací řetězec, měli byste tuto hodnotu nastavit na false a použít pole záznamu CredentialConnectionString možností popsané v další tabulce.Výchozí: true |
Následující tabulka popisuje pole záznamů možností, která jsou k dispozici pouze prostřednictvím rozšiřitelnosti. Pole, která nejsou jednoduchými hodnotami literálů, jsou popsána v dalších částech.
Pole | Popis |
---|---|
AstVisitor |
Záznam obsahující jeden nebo více přepsání pro řízení generování dotazů SQL. Nejběžnějším využitím tohoto pole je poskytnutí logiky pro generování klauzule LIMIT/OFFSET pro ovladače, které nepodporují TOP. Pole zahrnují Constant a LimitClause .Další informace: Přepsání astVisitoru |
CancelQueryExplicitly |
Logická hodnota, která dává modulu M pokyn, aby explicitně zrušila všechna spuštěná volání prostřednictvím ovladače ODBC před ukončením připojení k serveru ODBC. Toto pole je užitečné v situacích, kdy se spouštění dotazů spravuje nezávisle na síťových připojeních k serveru, například v některých nasazeních Sparku. Ve většině případů není potřeba tuto hodnotu nastavit, protože dotaz na serveru se zruší při ukončení síťového připojení k serveru. Výchozí hodnota: false |
ClientConnectionPooling |
Logická hodnota, která umožňuje sdružování připojení na straně klienta pro ovladač ODBC. Většinaovladačůch Výchozí hodnota: false |
CredentialConnectionString |
Text nebo hodnota záznamu použitá k určení vlastností souvisejících s přihlašovacími údaji připojovací řetězec. |
HideNativeQuery |
Logická hodnota, která určuje, jestli konektor zobrazuje vygenerované příkazy SQL v uživatelském prostředí Power Query. Tato hodnota by měla být nastavena na true pouze v případě, že back-endový zdroj dat nativně podporuje SQL-92. Výchozí hodnota: false |
ImplicitTypeConversions |
Hodnota tabulky obsahující implicitní převody typů podporované ovladačem nebo back-endovým serverem. Hodnoty v této tabulce se přidají do převodů hlášených samotným ovladačem. Toto pole se obvykle používá s polem SQLGetTypeInfo při přepsání informací o datovém typu hlášených ovladačem. |
OnError |
Funkce zpracování chyb, která přijímá errorRecord parametr typu record .Mezi běžné použití této funkce patří zpracování selhání připojení SSL, poskytnutí odkazu ke stažení, pokud se váš ovladač v systému nenajde, a hlášení chyb ověřování. |
SoftNumbers |
Umožňuje modulu M vybrat kompatibilní datový typ, pokud převod mezi dvěma konkrétními číselnými typy není deklarován jako podporovaný v možnostech SQL_CONVERT_*. Výchozí hodnota: false |
SqlCapabilities |
Záznam, který poskytuje různá přepsání schopností ovladačů a způsob, jak určit možnosti, které nejsou vyjádřeny prostřednictvím rozhraní ODBC 3.8. Další informace: Přepsání sqlCapabilities |
SQLColumns |
Funkce, která umožňuje upravit metadata sloupců vrácená SQLColumns funkcí.Další informace: Přepsání sqlColumns |
SQLGetFunctions |
Záznam, který umožňuje přepsat hodnoty vrácené voláním SQLGetFunctions .Běžným použitím tohoto pole je zakázat použití vazby parametrů nebo určit, že vygenerované dotazy by měly místo funkce CONVERT používat přetypování. Další informace: Přepsání sqlGetFunctions |
SQLGetInfo |
Záznam, který umožňuje přepsat hodnoty vrácené voláním SQLGetInfo .Další informace: Přepsání SQLGetInfo |
SQLGetTypeInfo |
Tabulka nebo funkce, která vrací tabulku, která přepisuje informace o typu vrácené SQLGetTypeInfo funkcí .Pokud je hodnota nastavena na tabulku, hodnota zcela nahradí informace o typu hlášené ovladačem. SQLGetTypeInfo nebude volána.Když je hodnota nastavena na funkci, vaše funkce obdrží výsledek původního volání SQLGetTypeInfo , což vám umožní upravit tabulku.Toto pole se obvykle používá v případě neshody mezi datovými typy hlášenými SQLGetTypeInfo a SQLColumns .Další informace: Přepsání sqlGetTypeInfo |
SQLTables |
Funkce, která umožňuje upravit metadata tabulky vrácená voláním SQLTables . |
TolerateConcatOverflow |
Umožňuje zřetězení textových hodnot i v případě, že výsledek může být zkrácen tak, aby odpovídal rozsahu dostupného typu. Například při zřetězení pole VARCHAR(4000) s polem VARCHAR(4000) v systému, které podporuje maximální velikost VARCHAR 4000 a žádný typ CLOB, zřetězení se přeloží, i když se výsledek může zkrátit. Výchozí hodnota: false |
UseEmbeddedDriver |
(interní použití): Logická hodnota, která určuje, zda má být ovladač ODBC načten z místního adresáře (pomocí nových funkcí definovaných ve specifikaci ODBC 4.0). Tato hodnota je obecně nastavená pouze konektory vytvořenými Microsoftem, které jsou dodávány pomocí Power Query. Při nastavení na hodnotu false se správce ovladačů ODBC systému používá k vyhledání a načtení ovladače. Většina konektorů by toto pole neměla nastavovat. Výchozí hodnota: false |
Pole AstVisitor
je nastaveno prostřednictvím záznamu možností Odbc.DataSource . Slouží k úpravě příkazů SQL generovaných pro konkrétní scénáře dotazů.
Poznámka
Ovladače, které podporují klauzule LIMIT a OFFSET (místo TOP), budou chtít poskytnout přepsání LimitClause
.AstVisitor
Poskytnutí přepsání této hodnoty je zastaralé a může být odebráno z budoucích implementací.
Toto pole je funkce, která přijímá dva Int64.Type
argumenty (skip
, take
) a vrací záznam se dvěma textovými poli (Text
, Location
).
LimitClause = (skip as nullable number, take as number) as record => ...
Parametr skip
je počet řádků, které se mají přeskočit (to znamená argument POSUN). Pokud není zadán posun, hodnota přeskočení bude null. Pokud ovladač podporuje limit, ale nepodporuje POSUN, LimitClause
měla by funkce vrátit neplementovanou chybu (...), pokud je přeskočení větší než 0.
Parametr take
je počet řádků, které se mají vzít (to znamená argument LIMIT).
Pole Text
výsledku obsahuje text SQL, který se má přidat do vygenerovaného dotazu.
Pole Location
určuje, kam se má klauzule vložit. Následující tabulka popisuje podporované hodnoty.
Hodnota | Popis | Příklad |
---|---|---|
AfterQuerySpecification |
Klauzule LIMIT se umístí na konec vygenerovaného SQL. Toto je nejčastěji podporovaná syntaxe LIMIT. |
SELECT a, b, c Tabulka FROM WHERE A > 10 LIMIT 5 |
BeforeQuerySpecification |
Klauzule LIMIT je vložena před vygenerovaný příkaz SQL. | LIMIT 5 ŘÁDKŮ SELECT a, b, c Tabulka FROM WHERE A > 10 |
AfterSelect |
LIMIT přejde za příkaz SELECT a za libovolnými modifikátory (například DISTINCT). | SELECT DISTINCT LIMIT 5 a, b, c Tabulka FROM WHERE A > 10 |
AfterSelectBeforeModifiers |
LIMIT přejde za příkaz SELECT, ale před všemi modifikátory (například DISTINCT). | SELECT LIMIT 5 DISTINCT a, b, c Tabulka FROM WHERE A > 10 |
Následující fragment kódu poskytuje implementaci LimitClause pro ovladač, který očekává klauzuli LIMIT s volitelným posunem v následujícím formátu: [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"
]
Následující fragment kódu poskytuje LimitClause
implementaci pro ovladač, který podporuje limit, ale nikoli POSUN. 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"
]
Pole | Detaily |
---|---|
FractionalSecondsScale |
Číselná hodnota v rozsahu od 1 do 7 označující počet desetinných míst podporovaných pro hodnoty milisekund. Tuto hodnotu by měly nastavit konektory, které chtějí povolit posouvání dotazů přes hodnoty data a času. Výchozí hodnota: null |
PrepareStatements |
Logická hodnota, která označuje, že příkazy by měly být připraveny pomocí sqlPrepare. Výchozí hodnota: false |
SupportsTop |
Logická hodnota, která označuje, že ovladač podporuje klauzuli TOP k omezení počtu vrácených řádků. Výchozí hodnota: false |
StringLiteralEscapeCharacters |
Seznam textových hodnot, které určují znaky, které se mají použít při escaping řetězcových literálech a výrazech LIKE. Příklad: {""} Výchozí hodnota: null |
SupportsDerivedTable |
Logická hodnota, která označuje, že ovladač podporuje odvozené tabulky (dílčí výběry). U ovladačů, které nastavují úroveň shody na SQL_SC_SQL92_FULL (hlášené ovladačem nebo přepsáním pomocí nastavení Sql92Conformance, se předpokládá, že tato hodnota je pravdivá. U všech ostatních úrovní shody se tato hodnota ve výchozím nastavení nastaví na false. Pokud ovladač nehlásí úroveň dodržování předpisů SQL_SC_SQL92_FULL, ale podporuje odvozené tabulky, nastavte tuto hodnotu na true. Podpora odvozených tabulek se vyžaduje pro mnoho scénářů DirectQuery. |
SupportsNumericLiterals |
Logická hodnota, která označuje, jestli má vygenerovaný SQL obsahovat číselné hodnoty literálů. Pokud je nastavená hodnota false, číselné hodnoty se vždy zadají pomocí vazby parametrů. Výchozí hodnota: false |
SupportsStringLiterals |
Logická hodnota, která označuje, jestli má vygenerovaný SQL obsahovat hodnoty řetězcových literálů. Pokud je nastavená hodnota false, řetězcové hodnoty se vždy zadají pomocí vazby parametrů. Výchozí hodnota: false |
SupportsOdbcDateLiterals |
Logická hodnota, která označuje, jestli má vygenerovaný SQL obsahovat hodnoty literálů kalendářních dat. Pokud je nastavená hodnota false, hodnoty kalendářních dat se vždy zadají pomocí vazby parametrů. Výchozí hodnota: false |
SupportsOdbcTimeLiterals |
Logická hodnota, která označuje, jestli má vygenerovaný SQL obsahovat hodnoty časových literálů. Pokud je nastavená hodnota false, časové hodnoty se vždy zadají pomocí vazby parametrů. Výchozí hodnota: false |
SupportsOdbcTimestampLiterals |
Logická hodnota, která označuje, jestli má vygenerovaný SQL obsahovat hodnoty literálů časového razítka. Při nastavení na hodnotu false se hodnoty časového razítka vždy zadají pomocí vazby parametru. Výchozí hodnota: false |
SQLColumns
je obslužná rutina funkce, která přijímá výsledky volání ODBC sqlColumns. Zdrojový parametr obsahuje tabulku s informacemi o datovém typu. Toto přepsání se obvykle používá k opravě neshod datových typů mezi voláními a SQLGetTypeInfo
SQLColumns
.
Podrobnosti o formátu parametru zdrojové tabulky najdete ve funkci SQLColumns.
Toto pole slouží k přepsání SQLFunctions
hodnot vrácených ovladačem ODBC. Obsahuje záznam, jehož názvy polí jsou rovny FunctionId
konstantám definovaným pro funkci ODBC SQLGetFunctions . Číselné konstanty pro každé z těchto polí najdete ve specifikaci ODBC.
Pole | Detaily |
---|---|
SQL_CONVERT_FUNCTIONS |
Určuje, které funkce jsou podporovány při převodech typů. Ve výchozím nastavení se modul M pokusí použít funkci CONVERT. Ovladače, které dávají přednost použití funkce CAST, mohou tuto hodnotu přepsat tak, aby hlásily, že se podporuje pouze SQL_FN_CVT_CAST (číselná hodnota 0x2). |
SQL_API_SQLBINDCOL |
Logická hodnota (true/false), která označuje, jestli modul mashupu má při načítání dat použít rozhraní SQLBindCol API . Pokud je nastavená hodnota false, použije se místo toho SQLGetData . Výchozí hodnota: false |
Následující fragment kódu poskytuje příklad explicitně sděluje modulu M, aby místo funkce CONVERT používal cast.
SQLGetFunctions = [
SQL_CONVERT_FUNCTIONS = 0x2 /* SQL_FN_CVT_CAST */
]
Toto pole slouží k přepsání SQLGetInfo
hodnot vrácených ovladačem ODBC. Obsahuje záznam, jehož pole jsou názvy rovny InfoType
konstantám definovaným pro funkci ODBC SQLGetInfo . Číselné konstanty pro každé z těchto polí najdete ve specifikaci ODBC. Úplný seznam InfoTypes
kontrolovaných souborů najdete v trasovacích souborech mashupového stroje.
Následující tabulka obsahuje běžně přepisované SQLGetInfo
vlastnosti:
Pole | Detaily |
---|---|
SQL_SQL_CONFORMANCE |
Celočíselná hodnota označující úroveň SQL-92 podporovanou ovladačem: (1) SQL_SC_SQL92_ENTRY: Úroveň vstupu SQL-92 vyhovující předpisům. (2) SQL_SC_FIPS127_2_TRANSITIONAL: přechodná úroveň FIPS 127–2. (4) SQL_SC_ SQL92_INTERMEDIATE" vyhovující standardu SQL-92 střední úrovně. (8) SQL_SC_SQL92_FULL: Úplná úroveň SQL-92 kompatibilní. Ve scénářích Power Query se konektor používá v režimu jen pro čtení. Většina ovladačů bude chtít nahlásit úroveň dodržování předpisů SQL_SC_SQL92_FULL a přepsat konkrétní chování generování SQL pomocí vlastností SQLGetInfo a SQLGetFunctions vlastností. |
SQL_SQL92_PREDICATES |
Bitová maska výčet predikátů podporovaných v příkazu SELECT, jak je definováno v SQL-92. Ve specifikaci ODBC přejděte na konstanty SQL_SP_*. |
SQL_AGGREGATE_FUNCTIONS |
Výčet bitových masků pro agregační funkce SQL_AF_ALL SQL_AF_AVG SQL_AF_COUNT SQL_AF_DISTINCT SQL_AF_MAX SQL_AF_MIN SQL_AF_SUM Ve specifikaci ODBC přejděte na konstanty SQL_AF_*. |
SQL_GROUP_BY |
Celočíselná hodnota, která určuje vztah mezi sloupci v klauzuli GROUP BY a neagregovanými sloupci v seznamu select: SQL_GB_COLLATE: Na konci každého sloupce seskupení lze zadat klauzuli COLLATE. SQL_GB_NOT_SUPPORTED: Klauzule GROUP BY se nepodporují. SQL_GB_GROUP_BY_EQUALS_SELECT: Klauzule GROUP BY musí obsahovat všechny neagregované sloupce v seznamu select. Nemůže obsahovat žádné další sloupce. Například SELECT DEPT, MAX(SALARY) FROM EMPLOYEE GROUP BY DEPT. SQL_GB_GROUP_BY_CONTAINS_SELECT: Klauzule GROUP BY musí obsahovat všechny neagregované sloupce v seznamu select. Může obsahovat sloupce, které nejsou v seznamu výběru. Například SELECT DEPT, MAX(SALARY) FROM EMPLOYEE GROUP BY DEPT, AGE. SQL_GB_NO_RELATION: Sloupce v klauzuli GROUP BY a seznam select nesouvisí. Význam neseskupených, neagregovaných sloupců v seznamu výběrů je závislý na zdroji dat. Například SELECT DEPT, SALARY FROM EMPLOYEE GROUP BY DEPT, AGE. Ve specifikaci ODBC přejděte na konstanty SQL_GB_*. |
Následující pomocná funkce se dá použít k vytvoření hodnot bitových mask z seznamu celočíselné hodnoty:
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
lze zadat dvěma způsoby:
- Pevná
table
hodnota, která obsahuje stejné informace o typu jako voláníSQLGetTypeInfo
ODBC . - Funkce, která přijímá argument tabulky a vrací tabulku. Argument obsahuje původní výsledky volání
SQLGetTypeInfo
ODBC . Implementace funkce může upravit nebo přidat do této tabulky.
První přístup slouží k úplnému přepsání hodnot vrácených ovladačem ODBC. Druhý přístup se používá, pokud chcete tyto hodnoty přidat nebo upravit.
Podrobnosti o formátu parametru tabulky typů a očekávané návratové hodnotě najdete v referenčních informacích k funkci SQLGetTypeInfo.
Následující fragment kódu poskytuje statickou implementaci pro 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 } }
);
Následující fragmenty kódu připojují bpchar
typ k existujícím typům vráceným ovladačem.
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;
Připojovací řetězec pro ovladač ODBC je nastaven pomocí prvního argumentu pro funkce Odbc.DataSource a Odbc.Query. Hodnota může být text nebo záznam M. Při použití záznamu se každé pole v záznamu stane vlastností v připojovací řetězec. Všechny připojovací řetězec vyžadují Driver
pole (nebo DSN
pole, pokud požadujete, aby uživatelé předem nakonfigurovali dsN na úrovni systému). Vlastnosti související s přihlašovacími údaji jsou nastaveny samostatně. Jiné vlastnosti jsou specifické pro ovladač.
Následující fragment kódu ukazuje definici nové funkce zdroje dat, vytvoření záznamu ConnectionString
a vyvolání funkce 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;