ชนิดข้อมูลในนิพจน์ในรายงานที่มีการแบ่งหน้า (ตัวสร้างรายงาน Power BI)
นําไปใช้กับ: Power BI Report Builder Power BI Desktop
ชนิดข้อมูลแสดงข้อมูลชนิดต่างๆ ในรายงานแบบแบ่งหน้าเพื่อให้สามารถจัดเก็บและประมวลผลได้อย่างมีประสิทธิภาพ ชนิดข้อมูลทั่วไปประกอบด้วยข้อความ (หรือที่เรียกว่าสตริง) ตัวเลขที่มี และไม่มีตําแหน่งทศนิยม วันที่และเวลา และรูปภาพ ค่าในรายงานต้องเป็นชนิดข้อมูล Report Definition Language (RDL) คุณสามารถจัดรูปแบบค่าตามการกําหนดลักษณะของคุณเมื่อคุณแสดงในรายงาน ตัวอย่างเช่น เขตข้อมูลที่แสดงสกุลเงินถูกเก็บไว้ในข้อกําหนดของรายงานเป็นหมายเลขจุดทศนิยมลอยตัว แต่สามารถแสดงในรูปแบบที่หลากหลายโดยขึ้นอยู่กับคุณสมบัติรูปแบบที่คุณเลือก
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบการแสดง ดูจัดรูปแบบหน่วยข้อมูลของรายงาน (ตัวสร้างรายงาน Power BI)
ชนิดข้อมูล Report Definition Language (RDL) และชนิดข้อมูลการใช้งานภาษาทั่วไป (CLR)
ค่าที่ระบุในไฟล์ RDL ต้องเป็นชนิดข้อมูล RDL เมื่อมีการคอมไพล์และประมวลผลรายงาน ประเภทข้อมูล RDL จะถูกแปลงเป็นชนิดข้อมูล CLR ตารางต่อไปนี้แสดงการแปลงซึ่งถูกทําเครื่องหมายว่าค่าเริ่มต้น:
ชนิด RDL | ชนิด CLR |
---|---|
สตริง | ค่าเริ่มต้น: สตริง Chart, GUID, Timespan |
บูลีน | ค่าเริ่มต้น: บูลีน |
จำนวนเต็ม | ค่าเริ่มต้น: Int64 Int16, Int32, Uint16, Uint64, Byte, Sbyte |
DateTime | ค่าเริ่มต้น: วันที่เวลา DateTimeOffset |
Float | ค่าเริ่มต้น: คู่ เดียว ทศนิยม |
ไบนารี | ค่าเริ่มต้น: ไบต์[] |
ตัวแปร | รายการใดข้างต้นยกเว้นไบต์[] |
VariantArray | อาร์เรย์ของตัวแปร |
Serializable | ตัวแปรหรือชนิดที่ทําเครื่องหมายด้วย Serializable หรือใช้ ISerializable |
ทําความเข้าใจชนิดข้อมูลและนิพจน์การเขียน
เป็นสิ่งสําคัญที่ต้องทําความเข้าใจชนิดข้อมูลเมื่อคุณเขียนนิพจน์เพื่อเปรียบเทียบหรือรวมค่า ตัวอย่างเช่น เมื่อคุณกําหนดนิพจน์กลุ่มหรือตัวกรอง หรือคํานวณผลรวม การเปรียบเทียบและการคํานวณจะใช้ได้เฉพาะระหว่างรายการที่มีข้อมูลประเภทเดียวกันเท่านั้น ถ้าชนิดข้อมูลไม่ตรงกัน คุณต้องแปลงชนิดข้อมูลในรายการของรายงานโดยใช้นิพจน์อย่างชัดเจน
รายการต่อไปนี้อธิบายกรณีที่คุณอาจจําเป็นต้องแปลงข้อมูลเป็นชนิดข้อมูลอื่น:
การเปรียบเทียบค่าของพารามิเตอร์รายงานของชนิดข้อมูลหนึ่งชนิดกับเขตข้อมูลชุดข้อมูลของชนิดข้อมูลที่แตกต่างกัน
การเขียนนิพจน์ตัวกรองที่เปรียบเทียบค่าของชนิดข้อมูลที่แตกต่างกัน
การเขียนนิพจน์การเรียงลําดับที่รวมเขตข้อมูลของชนิดข้อมูลที่แตกต่างกัน
การเขียนนิพจน์กลุ่มที่รวมเขตข้อมูลของชนิดข้อมูลที่แตกต่างกัน
การแปลงค่าที่ดึงมาจากแหล่งข้อมูลจากชนิดข้อมูลหนึ่งไปเป็นชนิดข้อมูลอื่น
กําหนดชนิดข้อมูลของข้อมูลรายงาน
หากต้องการกําหนดชนิดข้อมูลของรายการรายงาน คุณสามารถเขียนนิพจน์ที่ส่งกลับชนิดข้อมูลได้ ตัวอย่างเช่น เมื่อต้องการแสดงชนิดข้อมูลสําหรับเขตข้อมูล MyField
ให้เพิ่มนิพจน์ต่อไปนี้ลงในเซลล์ตาราง: =Fields!MyField.Value.GetType().ToString()
ผลลัพธ์จะแสดงชนิดข้อมูล CLR ที่ใช้เพื่อแสดง MyField
ตัวอย่างเช่น System.String หรือ System.DateTime
แปลงเขตข้อมูลชุดข้อมูลให้เป็นชนิดข้อมูลอื่น
คุณยังสามารถแปลงเขตข้อมูลชุดข้อมูลก่อนที่คุณใช้ในรายงานได้ รายการต่อไปนี้อธิบายวิธีการที่คุณสามารถแปลงเขตข้อมูลชุดข้อมูลที่มีอยู่ได้:
ปรับเปลี่ยนคิวรีชุดข้อมูลเพื่อเพิ่มเขตข้อมูลคิวรีใหม่ด้วยข้อมูลที่แปลงแล้ว สําหรับแหล่งข้อมูลเชิงสัมพันธ์หรือหลายมิติ สิ่งนี้ใช้ทรัพยากรของแหล่งข้อมูลเพื่อดําเนินการแปลง
สร้างเขตข้อมูลจากการคํานวณโดยยึดตามเขตข้อมูลชุดข้อมูลรายงานที่มีอยู่โดยการเขียนนิพจน์ที่แปลงข้อมูลทั้งหมดในคอลัมน์ชุดผลลัพธ์หนึ่งคอลัมน์เป็นคอลัมน์ใหม่ที่มีชนิดข้อมูลที่แตกต่างกัน ตัวอย่างเช่น นิพจน์ต่อไปนี้แปลงเขตข้อมูล ปี จากค่าจํานวนเต็มเป็นค่าสตริง:
=CStr(Fields!Year.Value)
สําหรับข้อมูลเพิ่มเติม ดูเพิ่ม แก้ไข รีเฟรชเขตข้อมูลในบานหน้าต่างข้อมูลรายงาน (ตัวสร้างรายงาน Power BI)ตรวจสอบว่าส่วนขยายการประมวลผลข้อมูลที่คุณกําลังใช้มีเมตาดาต้าสําหรับการดึงข้อมูลที่จัดรูปแบบไว้ล่วงหน้าหรือไม่ ตัวอย่างเช่น คิวรี MDX ของ SQL Server Analysis Services มีคุณสมบัติเพิ่มเติม FORMATTED_VALUE สําหรับค่าคิวบ์ที่ได้รับการจัดรูปแบบแล้วเมื่อประมวลผลคิวบ์ สําหรับข้อมูลเพิ่มเติม ดูคุณสมบัติของเขตข้อมูลเพิ่มเติมสําหรับฐานข้อมูล Analysis Services (SSRS)
ทําความเข้าใจชนิดข้อมูลพารามิเตอร์
พารามิเตอร์รายงานต้องเป็นหนึ่งในห้าชนิดข้อมูล: บูลีน, วันที่เวลา, จํานวนเต็ม, เลขทศนิยม หรือข้อความ (หรือที่เรียกว่าสตริง) เมื่อคิวรีชุดข้อมูลประกอบด้วยพารามิเตอร์คิวรี พารามิเตอร์ของรายงานจะถูกสร้างขึ้นโดยอัตโนมัติและเชื่อมโยงกับพารามิเตอร์คิวรี ชนิดข้อมูลเริ่มต้นสําหรับพารามิเตอร์รายงานคือสตริง หากต้องการเปลี่ยนชนิดข้อมูลเริ่มต้นของพารามิเตอร์รายงาน ให้เลือกค่าที่ถูกต้องจากรายการ ดรอปดาวน์ ชนิดข้อมูล บนหน้า ทั่วไป ของ กล่องโต้ตอบ คุณสมบัติ พารามิเตอร์รายงาน
หมายเหตุ
พารามิเตอร์รายงานที่เป็นชนิดข้อมูล DateTime ไม่สนับสนุนหน่วยมิลลิวินาที แม้ว่าคุณสามารถสร้างพารามิเตอร์ตามค่าที่มีมิลลิวินาทีแต่คุณไม่สามารถเลือกค่าจากรายการดรอปดาวน์ค่าที่มีที่มีค่าวันที่หรือเวลาที่มีหน่วยมิลลิวินาทีได้
เขียนนิพจน์ที่แปลงชนิดข้อมูลหรือแยกส่วนของข้อมูล
เมื่อคุณรวมเขตข้อมูลข้อความและชุดข้อมูลโดยใช้ตัวดําเนินการเรียงต่อกัน (&) รันไทม์ภาษาทั่วไป (CLR) โดยทั่วไปจะมีรูปแบบเริ่มต้น เมื่อคุณต้องแปลงเขตข้อมูลชุดข้อมูลหรือพารามิเตอร์เป็นชนิดข้อมูลที่เฉพาะเจาะจงอย่างชัดเจน คุณต้องใช้เมธอด CLR หรือฟังก์ชันไลบรารีรันไทม์ Visual Basic เพื่อแปลงข้อมูล
ตารางต่อไปนี้แสดงตัวอย่างของการแปลงชนิดข้อมูล
ชนิดของการแปลง | ตัวอย่าง |
---|---|
DateTime ไปยัง String | =CStr(Fields!Date.Value) |
สตริงไปยังวันที่เวลา | =DateTime.Parse(Fields!DateTimeinStringFormat.Value) |
สตริงไปยัง DateTimeOffset | =DateTimeOffset.Parse(Fields!DateTimeOffsetinStringFormat.Value) |
การแยกปี | =Year(Fields!TimeinStringFormat.Value) -- or -- =Year(Fields!TimeinDateTimeFormat.Value) |
บูลีนเป็นจํานวนเต็ม | =CInt(Parameters!BooleanField.Value) -1 เป็นจริง และ 0 เป็น False |
บูลีนเป็นจํานวนเต็ม | =System.Convert.ToInt32(Fields!BooleanFormat.Value) 1 เป็นจริง และ 0 เป็น เท็จ |
เฉพาะส่วน DateTime ของค่า DateTimeOffset | =Fields!MyDatetimeOffset.Value.DateTime |
เพียงส่วนออฟเซตของค่า DateTimeOffset | =Fields!MyDatetimeOffset.Value.Offset |
คุณยังสามารถใช้ฟังก์ชัน Format เพื่อควบคุมรูปแบบการแสดงผลสําหรับค่าได้ สําหรับข้อมูลเพิ่มเติม ให้ดู ฟังก์ชัน (Visual Basic)
ตัวอย่างขั้นสูง
เมื่อคุณเชื่อมต่อกับแหล่งข้อมูลด้วยตัวให้บริการข้อมูลที่ไม่ได้ให้การสนับสนุนการแปลงสําหรับชนิดข้อมูลทั้งหมดในแหล่งข้อมูล ชนิดข้อมูลเริ่มต้นสําหรับชนิดแหล่งข้อมูลที่ไม่สนับสนุนคือสตริง ตัวอย่างต่อไปนี้จะให้โซลูชันสําหรับชนิดข้อมูลที่เฉพาะเจาะจงที่ส่งกลับเป็นสตริง
เชื่อมสตริงและชนิดข้อมูล CLR DateTimeOffset เข้าด้วยกัน
สําหรับชนิดข้อมูลส่วนใหญ่ CLR แสดงการแปลงค่าเริ่มต้นเพื่อให้คุณสามารถเชื่อมค่าที่มีชนิดข้อมูลที่แตกต่างกันลงในสตริงเดียวโดยใช้ตัวดําเนินการ & ตัวอย่างเช่น นิพจน์ต่อไปนี้จะเชื่อมข้อความ "วันที่และเวลาเป็น: " ด้วยเขตข้อมูลชุดข้อมูล StartDate ซึ่งเป็นDateTimeค่า: ="The date and time are: " & Fields!StartDate.Value
สําหรับชนิดข้อมูลบางชนิด คุณอาจจําเป็นต้องรวมฟังก์ชัน ToString ตัวอย่างเช่น นิพจน์ต่อไปนี้แสดงตัวอย่างเดียวกันโดยใช้ชนิดข้อมูล DateTimeOffsetCLR ซึ่งรวมถึงวันที่ เวลา และออฟเซตโซนเวลาที่สัมพันธ์กับโซนเวลา UTC: ="The time is: " & Fields!StartDate.Value.ToString()
แปลงชนิดข้อมูลสตริงเป็นชนิดข้อมูล CLR DateTime
ถ้าส่วนขยายการประมวลผลข้อมูลไม่สนับสนุนชนิดข้อมูลทั้งหมดที่กําหนดไว้ในแหล่งข้อมูล ข้อมูลอาจถูกเรียกใช้เป็นข้อความ ตัวอย่างเช่น ค่าชนิดข้อมูล datetimeoffset(7) อาจถูกเรียกใช้เป็นชนิดข้อมูลสตริง ในเพิร์ท ออสเตรเลีย ค่าสตริงสําหรับวันที่ 1 กรกฎาคม 2008 เวลา 6:05:07.99999999 A.M. จะคล้ายกับ:
2008-07-01 06:05:07.9999999 +08:00
ตัวอย่างนี้แสดงวันที่ (1 กรกฎาคม 2008) ตามด้วยเวลาด้วยความแม่นยําของตัวเลข 7 หลัก (6:05:07.9999999 A.M.) ตามด้วยโซนเวลา UTC ในชั่วโมงและนาที (บวก 8 ชั่วโมง 0 นาที) สําหรับตัวอย่างต่อไปนี้ ค่านี้ได้ถูกใส่ไว้ในเขตข้อมูลสตริงที่เรียกว่า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 A.M. - [+08:00
] ตามเวลา UTC ของ 11 P.M. ในตอนกลางคืนก่อนหน้า) ฟังก์ชันDateTime.Parse
จะใช้ออฟเซต UTC ของเซิร์ฟเวอร์รายงานภายในและถ้าจําเป็น จะปรับเวลาอีกครั้งสําหรับเวลาออมแสง ตัวอย่างเช่น ใน Redmond, Washington เวลาท้องถิ่นที่ปรับเปลี่ยนสําหรับการประหยัดเวลาตามฤดูกาลคือ[-07:00]
หรือ 7 ชั่วโมงก่อนหน้า 11 PM ผลลัพธ์คือค่า DateTime ต่อไปนี้:2007-07-06 04:07:07 PM
(6 กรกฎาคม 2007 ที่ 4:07 P.M.)
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการแปลงสตริงเป็นชนิดข้อมูล 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