Типы данных в выражениях в отчете с разбивкой на страницы (Power BI построитель отчетов)
ОБЛАСТЬ ПРИМЕНЕНИЯ: Power BI построитель отчетов Power BI Desktop
Типы данных представляют разные виды данных в отчете с разбивкой на страницы, чтобы их можно было эффективно хранить и обрабатывать. Стандартные типы данных включают текст (строки), числа с десятичными разрядами или без них, даты и время, а также изображения. Значения в отчете должны быть типом данных языка определения отчета (RDL). При отображении значения в отчете его можно отформатировать в соответствии с конкретными предпочтениями. Например, поле, представляющее валюту, может храниться в определении отчета как число с плавающей запятой, но отображаться в различных форматах в зависимости от выбранного свойства формата.
Дополнительные сведения о форматах отображения см. в разделе "Форматирование элементов отчета" (Power BI построитель отчетов).
Типы данных языка определения отчетов и типы данных среды CLR
Значения, заданные в RDL-файле, должны иметь один из типов данных языка определения отчетов. При компиляции и обработке отчета типы данных языка определения отчетов преобразуются в типы данных среды CLR. В следующей таблице показаны применяемые преобразования, которые обозначены «По умолчанию».
Тип RDL | Типы CLR |
---|---|
Строка | По умолчанию: String Chart, GUID, Timespan |
Логический | По умолчанию: Boolean |
Целое | По умолчанию: Int64 Int16, Int32, Uint16, Uint64, Byte, Sbyte |
Дата/время | По умолчанию: DateTime DateTimeOffset |
Тип с плавающей запятой | По умолчанию: Double Single, Decimal |
Binary | По умолчанию: Byte[] |
Вариант | Любое из вышеприведенного, кроме Byte[] |
VariantArray | Массив данных типа Variant |
Упорядочиваемый уровень изоляции | Значение типа Variant или типов, отмеченных свойством Serializable или реализующих интерфейс ISerializable. |
Общие сведения о типах данных и написании выражений
Важно понимать типы данных при написании выражений, в которых сравниваются или сочетаются значения, например, при определении выражений группы или критериев фильтра либо при вычислении статистических значений. Сравнения и вычисления допускаются только с элементами одного типа данных. Если типы данных не совпадают, можно явно преобразовать тип данных в элементе отчета с помощью выражения.
Ниже описаны случаи, когда необходимо преобразовать один тип данных в другой.
Сравнение значения параметра отчета одного типа данных с полем набора данных другого типа.
Написание критерия фильтра, в котором сравниваются значения разных типов данных.
Написание выражения сортировки, в котором сочетаются поля, имеющие разный тип данных.
Написание выражений группы, в котором сочетаются поля, имеющие разный тип данных.
Преобразование значения, полученного из источника данных одного типа данных, в другой тип данных.
Определение типа данных отчета
Чтобы определить тип данных элемента отчета, можно написать выражение, возвращающее тип данных. Например, чтобы показать тип данных для поля MyField
, добавьте к ячейке таблицы следующее выражение: =Fields!MyField.Value.GetType().ToString()
. Результат отображает тип данных CLR, используемый для представления поля MyField
, например System.String или System.DateTime.
Преобразование полей набора данных в другой тип данных
Можно также преобразовать поля набора данных, прежде чем они будут использоваться в отчете. В следующем списке описаны способы преобразования существующего поля набора данных.
Изменение запроса набора данных, чтобы добавить новое поле запроса с преобразованными данными. В реляционных и многомерных источниках данных при этом способе в операции преобразования используются ресурсы источника данных.
Создание вычисляемого поля на основе существующего поля набора данных отчета с помощью выражения, преобразующего все данные одного столбца результирующего набора в данные нового столбца с другим типом данных. Например, следующее выражение преобразует поле Year из целочисленного значения в строковое:
=CStr(Fields!Year.Value)
. Дополнительные сведения см. в разделе "Добавление, изменение, обновление полей" в области данных отчета (Power BI построитель отчетов).Проверка наличия метаданных в используемом модуле обработки данных с целью получения предварительно отформатированных данных. Например, запрос многомерных выражений служб SQL Server Analysis Services включает расширенное свойство FORMATTED_VALUE для значений куба, отформатированных при обработке куба. Дополнительные сведения см. в статье Расширенные свойства поля для базы данных служб Analysis Services (службы SSRS).
Общие сведения о типах данных параметров
Параметры отчета должны иметь один из пяти типов данных: Boolean, DateTime, Integer, Float или Text (также известный как String). Если запрос набора данных включает параметры запроса, автоматически создаются параметры отчета, которые связываются с параметрами запроса. Типом данных по умолчанию для параметра отчета является String. Чтобы изменить тип данных по умолчанию параметра отчета, выберите правильное значение из раскрывающегося списка типов данных на странице "Общие" диалогового окна "Свойства параметра отчета".
Примечание.
Параметры отчета с типами данных DateTime не поддерживают миллисекунды. Хотя можно создать параметр на основе значений, включающих миллисекунда, нельзя выбрать значение из раскрывающегося списка доступных значений, включающего значения даты или времени, включая миллисекунда.
Запись выражений, которые преобразуют типы данных или извлекают части данных
При объединении текста и полей набора данных с помощью оператора объединения (&) среда CLR обычно предоставляет форматы по умолчанию. Если нужно явно преобразовать поле набора данных или параметр в конкретный тип данных, для преобразования данных необходимо использовать метод CLR или функцию библиотеки времени выполнения Visual Basic.
В следующей таблице приводятся примеры преобразования типов данных.
Тип преобразования | Пример |
---|---|
DateTime в String | =CStr(Fields!Date.Value) |
String в DateTime | =DateTime.Parse(Fields!DateTimeinStringFormat.Value) |
String в DateTimeOffset | =DateTimeOffset.Parse(Fields!DateTimeOffsetinStringFormat.Value) |
Получение года | =Year(Fields!TimeinStringFormat.Value) -- or -- =Year(Fields!TimeinDateTimeFormat.Value) |
Boolean в Integer | =CInt(Parameters!BooleanField.Value) -1 соответствует значению True, а 0 — значению False. |
Boolean в Integer | =System.Convert.ToInt32(Fields!BooleanFormat.Value) 1 соответствует значению True, а 0 соответствует значению False. |
Только часть DateTime значения DateTimeOffset | =Fields!MyDatetimeOffset.Value.DateTime |
Только часть Offset значения DateTimeOffset | =Fields!MyDatetimeOffset.Value.Offset |
Для управления отображаемым форматом значений можно также использовать функцию Format. Дополнительные сведения см. в разделе Функции (Visual Basic).
Дополнительные примеры
При соединении с источником данных поставщика данных, не поддерживающим преобразование всех типов данных, типом данных по умолчанию для неподдерживаемых типов является String. В следующих примерах приводятся решения для конкретных типов данных, которые возвращаются как String.
Объединение строк и типа данных CLR DateTimeOffset
Для большинства типов данных среда CLR обеспечивает преобразования по умолчанию для объединения значений, имеющих разный тип данных, в одну строку с помощью оператора &. Например, следующее выражение объединяет текст "The date and time are: " с полем набора данных StartDate, которое является значением DateTime : ="The date and time are: " & Fields!StartDate.Value
.
Для некоторых типов данных может понадобиться включение функции ToString. Например, в следующем выражении показан тот же пример с использованием типа данных CLR DateTimeOffset, который включает дату, время и смещение часового пояса относительно часового пояса времени в формате UTC: ="The time is: " & Fields!StartDate.Value.ToString()
.
Преобразование строкового типа данных в тип данных CLR DateTime
Если модуль обработки данных не поддерживает все определенные в источнике данных типы данных, данные могут быть получены в виде текста. Например, значение с типом данных datetimeoffset(7) можно получить как значение String. В Перте, Австралия, строковое значение 1 июля 2008 г. в 6:05:07.99999999 A.M. будет выглядеть следующим образом:
2008-07-01 06:05:07.9999999 +08:00
В этом примере показана дата (1 июля 2008), за которой следует время с 7-значной точностью (6:05:07.9999999 утра) и смещение часового пояса времени в формате UTC в часах и минутах (+ 8 часов 0 минут). В следующих примерах это значение помещается в поле с типом данных String с именем MyDateTime.Value
.
Для преобразования этой даты в одно или несколько значений CLR можно воспользоваться одним из следующих способов.
В текстовом поле получите часть строки с помощью выражения. Например:
Следующее выражение возвращает часть строки, относящуюся к часу смещения часового пояса времени в формате UTC, и преобразует ее в минуты:
=CInt(Fields!MyDateTime.Value.Substring(Fields!MyDateTime.Value.Length-5,2)) * 60
Результат
480
.Следующее выражение преобразует строку в значение даты и времени:
=DateTime.Parse(Fields!MyDateTime.Value)
В строке
MyDateTime.Value
указано смещение часового пояса времени в формате UTC. ФункцияDateTime.Parse
вначале определяет смещение времени в формате UTC (7:00 утра — [+08:00
] относительно времени в формате UTC 23:00 предыдущего вечера). Затем функцияDateTime.Parse
применяет локальное смещение времени в формате UTC сервера отчетов и при необходимости настраивает переход на летнее время. Например, в Ричмонде, штат Вашингтон, смещение локального времени с переходом на летнее время составляет[-07:00]
, или на 7 часов раньше 23:00. Результатом является следующее значение типа DateTime :2007-07-06 04:07:07 PM
(6 июля 2007 г., 16:07).
Дополнительные сведения о преобразовании строк в типы данных DateTime см. в статьях Синтаксический анализ строк даты и времени, Форматирование даты и времени для конкретной культуры и Выбор типов данных DateTime, DateTimeOffset и TimeZoneInfo.
Добавление нового вычисляемого поля к набору данных отчета, который использует выражение для получения части строки. Дополнительные сведения см. в разделе "Добавление, изменение, обновление полей" в области данных отчета (Power BI построитель отчетов).
Изменение запроса набора данных отчета, чтобы использовать функции Transact-SQL для независимого получения значений даты и времени и создания отдельных столбцов. В следующем примере показано использование функции DatePart для добавления столбца к году и столбца к смещению часового пояса времени в формате UTC, преобразованного в минуты:
SELECT
MyDateTime,
DATEPART(year, MyDateTime) AS Year,
DATEPART(tz, MyDateTime) AS OffsetinMinutes
FROM MyDates
Результирующий набор содержит три столбца. Первый столбец представляет дату и время, второй — год, а третий содержит значение смещения времени в формате UTC в минутах. В следующей строке показаны данные примера:
2008-07-01 06:05:07 2008 480
Дополнительные сведения о типах данных в базах данных SQL Server см. в разделах Типы данных (Transact-SQL) и Типы данных и функции даты и времени (Transact-SQL).
Дополнительные сведения о типах данных SQL Server Analysis Services см. в разделе Типы данных в службах Analysis Services.