88 lines
6.4 KiB
Plaintext
88 lines
6.4 KiB
Plaintext
/// DNS-name of the server with BI-data, e.g. "myhost.bitrix24.com"
|
||
expression 'Server address' = "magok.bitrix24.ru" meta [IsParameterQuery=true, Type="Text", IsParameterQueryRequired=true]
|
||
|
||
annotation PBI_ResultType = Text
|
||
|
||
/// Secret token
|
||
expression 'Secret key' = "OLK0Ik9i34J1r3afMOHb5Q16DO821hjMru" meta [IsParameterQuery=true, Type="Text", IsParameterQueryRequired=true]
|
||
|
||
annotation PBI_ResultType = Text
|
||
|
||
expression bx24_load_entity =
|
||
let
|
||
//https://helpdesk.bitrix24.com/open/16457718/
|
||
//bx24_entity_name: "crm_company_uf"
|
||
//https://docs.microsoft.com/en-us/powerquery-m/web-contents
|
||
func = (bx24_entity_name as text) as table =>
|
||
let
|
||
response = Web.Contents(
|
||
"https://" & #"Server address",
|
||
[
|
||
RelativePath = "bitrix/tools/biconnector/pbi.php",
|
||
Query = [
|
||
table = bx24_entity_name
|
||
],
|
||
Content = Json.FromValue([dateRange = [
|
||
startDate = Date.AddYears(Date.From(DateTime.LocalNow()),-5),
|
||
endDate = Date.From(DateTime.LocalNow())],
|
||
key = #"Secret key"
|
||
]
|
||
)
|
||
]
|
||
),
|
||
jd = Json.Document(response)
|
||
in
|
||
Table.FromRows(
|
||
List.Skip(jd),//data: >=1 row (index 0 based)
|
||
List.First(jd)//header: 0 row (index 0 based)
|
||
)
|
||
in
|
||
func
|
||
|
||
annotation PBI_ResultType = Function
|
||
|
||
expression 'Ошибки в Я Директ расходы' =
|
||
let
|
||
Источник = #"Я.Директ расходы стар",
|
||
#"Обнаруженные несоответствия типов" = let
|
||
tableWithOnlyPrimitiveTypes = Table.SelectColumns(Источник, Table.ColumnsOfType(Источник, {type nullable number, type nullable text, type nullable logical, type nullable date, type nullable datetime, type nullable datetimezone, type nullable time, type nullable duration})),
|
||
recordTypeFields = Type.RecordFields(Type.TableRow(Value.Type(tableWithOnlyPrimitiveTypes))),
|
||
fieldNames = Record.FieldNames(recordTypeFields),
|
||
fieldTypes = List.Transform(Record.ToList(recordTypeFields), each [Type]),
|
||
pairs = List.Transform(List.Positions(fieldNames), (i) => {fieldNames{i}, (v) => if v = null or Value.Is(v, fieldTypes{i}) then v else error [Message = "Тип значения не соответствует типу столбца.", Detail = v], fieldTypes{i}})
|
||
in
|
||
Table.TransformColumns(Источник, pairs),
|
||
#"Добавлен индекс" = Table.AddIndexColumn(#"Обнаруженные несоответствия типов", "Номер строки" ,1),
|
||
#"Сохраненные ошибки" = Table.SelectRowsWithErrors(#"Добавлен индекс", {"Дата", "Кампания", "Группа", "Условие показа", "№ Условия показа", "Показы", "Клики", "CTR (%)", "key_dir", "Ср. цена клика, руб", "Расход, руб"}),
|
||
#"Переупорядоченные столбцы" = Table.ReorderColumns(#"Сохраненные ошибки", {"Номер строки", "Дата", "Кампания", "Группа", "Условие показа", "№ Условия показа", "Показы", "Клики", "CTR (%)", "key_dir", "Ср. цена клика, руб", "Расход, руб"})
|
||
in
|
||
#"Переупорядоченные столбцы"
|
||
queryGroup: 'Ошибки в запросах — 05 01 2025 15:59:08'
|
||
|
||
annotation PBI_NavigationStepName = Навигация
|
||
|
||
annotation PBI_ResultType = Exception
|
||
|
||
expression 'Я.Директ расходы стар' =
|
||
let
|
||
Источник = GoogleSheets.Contents("https://docs.google.com/spreadsheets/d/12gd2O6tTGPGc2BsRbX_QPKn4VF23jhXoFcrj8ErblAo/edit?usp=sharing"),
|
||
#"Мастер отчётов_Table" = Источник{[name="Мастер отчётов",ItemKind="Table"]}[Data],
|
||
#"Повышенные заголовки" = Table.PromoteHeaders(#"Мастер отчётов_Table", [PromoteAllScalars=true]),
|
||
#"Измененный тип" = Table.TransformColumnTypes(#"Повышенные заголовки",{{"Дата", type date}, {"Кампания", type text}, {"№ Кампании", type text}, {"Группа", type text}, {"№ Группы", type text}, {"Условие показа", type text}, {"№ Условия показа", type text}, {"Показы", Int64.Type}, {"Клики", Int64.Type}, {"CTR (%)", type number}, {"Расход (руб.)", type number}, {"Ср. цена клика (руб.)", type number}}),
|
||
#"Вставлено: объединенный столбец" = Table.AddColumn(#"Измененный тип", "key_dir", each Text.Combine({[#"№ Кампании"], [#"№ Группы"]}, "-"), type text),
|
||
#"Удаленные столбцы" = Table.RemoveColumns(#"Вставлено: объединенный столбец",{"№ Кампании", "№ Группы"}),
|
||
#"Добавлен пользовательский объект" = Table.AddColumn(#"Удаленные столбцы", "Ср. цена клика, руб", each [#"Ср. цена клика (руб.)"]/1000),
|
||
#"Удаленные столбцы1" = Table.RemoveColumns(#"Добавлен пользовательский объект",{"Ср. цена клика (руб.)"}),
|
||
#"Измененный тип1" = Table.TransformColumnTypes(#"Удаленные столбцы1",{{"Ср. цена клика, руб", type number}}),
|
||
#"Добавлен пользовательский объект1" = Table.AddColumn(#"Измененный тип1", "Расход, руб", each [#"Расход (руб.)"]/1000),
|
||
#"Измененный тип2" = Table.TransformColumnTypes(#"Добавлен пользовательский объект1",{{"Расход, руб", type number}}),
|
||
#"Удаленные столбцы2" = Table.RemoveColumns(#"Измененный тип2",{"Расход (руб.)"}),
|
||
#"Строки с примененным фильтром" = Table.SelectRows(#"Удаленные столбцы2", each [Дата] < #date(2024, 6, 1))
|
||
in
|
||
#"Строки с примененным фильтром"
|
||
|
||
annotation PBI_NavigationStepName = Навигация
|
||
|
||
annotation PBI_ResultType = Table
|
||
|