【Power BI DAX】将数字转化为二进制,以及从二进制转化为数字

  1. DAX: 将数字转化为二进制,以及从二进制转化为数字

  2. 先用GENERATESERIES函数生产一系列数字,Binary Mapping = GENERATESERIES(1,512
  3. 再用如下公式生成二进制数据
  4. 1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    Number to Binary v1 =

    VAR Number = 'Binary Mapping'[Value]

    RETURN

        MOD(TRUNC(Number / 256) ,2) &

        MOD(TRUNC(Number / 128) ,2) &

        MOD(TRUNC(Number /  64) ,2) &

        MOD(TRUNC(Number /  32) ,2) &

        MOD(TRUNC(Number /  16) ,2) &

        MOD(TRUNC(Number /   8) ,2) &        

        MOD(TRUNC(Number /   4) ,2) &

        MOD(TRUNC(Number /   2) ,2) &

        MOD(Number,2)

    http://radacad.com/wp-content/uploads/2018/06/V1.png

  5. 如果需要显示更长的二进制编码呢,可用使用return 表达式来添加更多行,也可以使用concatenate 函数来实现
  6. 1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    Number to Binary V2 =

    VAR Number = 'Binary Mapping'[Value]

    VAR Bits = 16

    VAR BitPositions = GENERATESERIES(1,Bits-1)

    RETURN

        CONCATENATEX(

            BitPositions ,

            MOD( TRUNC ( Number / POWER(2,[value]) ) , 2),

            ,

            [Value]

            ,DESC

            )

            & MOD(Number,2)

     

  7. 现在要将Binary value 转化为十进制的数字
  8.  

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    Binary to Number =

    VAR BinaryToConvert = "101"

    VAR Bits = MAXX('Binary Mapping',LEN('Binary Mapping'[Number to Binary v1]))

    VAR PaddedValue = RIGHT(REPT("0",Bits) & BinaryToConvert,Bits)

    RETURN

        MINX(

            FILTER(

                'Binary Mapping',

                'Binary Mapping'[Number to Binary v1] = PaddedValue),

           'Binary Mapping'[Value]

           )

     

    四行公式,最后的结果如下:

 

猜你喜欢

转载自blog.csdn.net/Babyfatliang/article/details/84870885