• 基本函数(4)——Power Query M语言


    基本函数(4)

    数字与文本的转换(Number与Text值的转换)

    Number.From、Number.FromText、Number.ToText、Number.IsOdd、Number.IsEven

    • Number.From

    • Number.FromText

    • Number.ToText

    • Number.IsOdd

    • Number.IsEven

    Number.ToText

    等价于format,某些情况可做正负零判断代替IF

    https://docs.microsoft.com/zh-cn/dax/format-function-dax

    实例1:添加库存状态列

     M code:

    let
        源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
        更改的类型 = Table.TransformColumnTypes(源,{{"日期", type date}}),
        已添加自定义 = Table.AddColumn(更改的类型, "", each Number.ToText([进出],"入库;出库;"))
    in
        已添加自定义

    实例2:工资条

     M code:

    let
        源 = Excel.CurrentWorkbook(){[Name="表4"]}[Content],
        a = List.Select(Table.ToRecords(源),each _[姓名]<>null),
        b = Table.FromRecords(List.Transform(List.Select(List.Positions(a),each Number.IsEven(_)),each a{_}))
    in
        b

    数字的取舍之道(Round系列函数)

    Number.RoundUp、Number.RoundDown、Number.RoundTowardZero、Number.RoundAwayFromZero、Number.Round

    • Number.RoundUp 向值大的方向入
    • Number.RoundDown 向值小的方向舍
    • Number.RoundTowardZero 靠近0入
    • Number.RoundAwayFromZero 远离0舍
    • Number.Round 四舍五入

     实例:制作标签

     

     M code:

    let
        源 = Excel.CurrentWorkbook(){[Name="表4"]}[Content],
        a = List.Transform(Table.ToRecords(源),each  Table.Transpose(Table.DemoteHeaders(Table.FromRecords({_&[#""=null],[考号=null,姓名=null,#""=null]})))),
        b = List.Transform({0..Number.RoundDown(List.Count(a)/4)},each Table.Transpose(Table.Combine(List.Range(a,_*4,4)))),
        自定义1 = Table.Combine(b)
    in
        自定义1

    绝对力量不多余

    Number.Abs、Number.Power、Number.Mod、Number.IntegerDivide

    • Number.Abs(数字)
    • Number.Power(底数,指数
    • Number.Mod(被除数,除数)
    • Number.IntegerDivide(被除数,除数)

     实例:单列转多行多列

     

    M code:

    let
        源 = Excel.CurrentWorkbook(){[Name="表6"]}[Content][姓名],
        a = List.Transform({0.. Number.IntegerDivide(List.Count(源)/4,1)},each List.Range(源,_*4,4)),
        b = Table.Transpose(Table.FromColumns(a))
    in
       b

    随机不随意

    Number. Random、Number.RandomBetween

    实例:随机抽题系统制作

     M code:

     1 let
     2     源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content][选择题],
     3     a = List.Range(List.Sort({0..List.Count(源)/5-1},each Number.Random()),0,20),
     4     b = List.Transform(a,each List.Range(源,_*5,5)),
     5     自定义1 = Table.FromColumns({List.Combine(b)},{"选择题"}),
     6     已添加索引 = Table.AddIndexColumn(自定义1, "索引", 1, 1),
     7     已添加自定义 = Table.AddColumn(已添加索引, "序号", each if Number.Mod(([索引]+4)/5,1)=0 then ([索引]+4)/5 else ""),
     8     删除的列 = Table.RemoveColumns(已添加自定义,{"索引"}),
     9     重排序的列 = Table.ReorderColumns(删除的列,{"序号", "选择题"})
    10 in
    11     重排序的列


    注意:利用List.Sort({ }, each Number.Random)可以将原有序列随机打乱顺序

    a = List.Range(List.Sort({0..List.Count(源)/5-1},each Number.Random()),0,20),

    End

  • 相关阅读:
    Linux上安装软件
    VIM的使用
    Linux命令(系统管理)
    django潜心之路4--模型
    django潜行之路3-模板
    django潜行之路2---视图
    django潜行之路1
    sql基础
    Mysql数据库总结
    反爬虫机制
  • 原文地址:https://www.cnblogs.com/zeon/p/15815153.html
Copyright © 2020-2023  润新知